SYMBOL INDEX (5266 symbols across 846 files) FILE: .github/scripts/coverage_file_fixer.py function path_prefixer (line 13) | def path_prefixer(file: Path, prefix: Path) -> None: function main (line 25) | def main(): FILE: boefjes/boefjes/__main__.py function get_runtime_manager (line 24) | def get_runtime_manager( function cli (line 58) | def cli(queue: str, worker: bool, images: tuple[str] | None, plugins: tu... FILE: boefjes/boefjes/api.py class UvicornServer (line 26) | class UvicornServer(ForkProcess): method __init__ (line 27) | def __init__(self, config: Config): method stop (line 32) | def stop(self) -> None: method run (line 35) | def run(self, *args, **kwargs): function run (line 39) | def run(): class TaskIn (line 47) | class TaskIn(BaseModel): function get_scheduler_client (line 51) | def get_scheduler_client(plugin_service=Depends(get_plugin_service)): function get_bytes_client (line 55) | def get_bytes_client(): function root (line 60) | async def root(): function boefje_input (line 65) | def boefje_input(task_id: UUID, scheduler_client: SchedulerAPIClient = D... function boefje_output (line 76) | def boefje_output( function get_task_from_scheduler (line 116) | def get_task_from_scheduler(task_id: UUID, scheduler_client: SchedulerAP... function pop_tasks (line 132) | def pop_tasks( function push_item (line 142) | def push_item( function patch_task (line 149) | def patch_task( function get_task (line 156) | def get_task(task_id: uuid.UUID, scheduler_client: SchedulerAPIClient = ... FILE: boefjes/boefjes/clients/bytes_client.py function retry_with_login (line 21) | def retry_with_login(function: ClientSessionMethod) -> ClientSessionMethod: class BytesAPIClient (line 36) | class BytesAPIClient(BoefjeStorageInterface): method __init__ (line 37) | def __init__(self, base_url: str, username: str, password: str): method login (line 48) | def login(self) -> None: method _verify_response (line 52) | def _verify_response(response: Response) -> None: method _get_authentication_headers (line 62) | def _get_authentication_headers(self) -> dict[str, str]: method _get_token (line 65) | def _get_token(self) -> str: method save_boefje_meta (line 73) | def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method get_boefje_meta (line 81) | def get_boefje_meta(self, boefje_meta_id: str) -> BoefjeMeta: method save_normalizer_meta (line 88) | def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: method get_normalizer_meta (line 96) | def get_normalizer_meta(self, normalizer_meta_id: uuid.UUID) -> Normal... method save_output (line 103) | def save_output(self, boefje_meta: BoefjeMeta, boefje_output: BoefjeOu... method save_raws (line 112) | def save_raws(self, boefje_meta_id: uuid.UUID, boefje_output: BoefjeOu... method save_raw (line 124) | def save_raw(self, boefje_meta_id: str, raw: str | bytes, mime_types: ... method get_raw (line 146) | def get_raw(self, raw_data_id: str) -> bytes: method get_raws (line 153) | def get_raws(self, boefje_meta_id: str) -> BoefjeOutput: method get_raw_meta (line 160) | def get_raw_meta(self, raw_data_id: str) -> RawDataMeta: FILE: boefjes/boefjes/clients/scheduler_client.py class SchedulerAPIClient (line 25) | class SchedulerAPIClient(SchedulerClientInterface): method __init__ (line 26) | def __init__( method _verify_response (line 41) | def _verify_response(response: Response) -> None: method pop_items (line 44) | def pop_items( method push_item (line 89) | def push_item(self, p_item: Task) -> None: method patch_task (line 96) | def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: method get_task (line 100) | def get_task(self, task_id: uuid.UUID, hydrate: bool = True) -> Task: method _hydrate_boefje_meta (line 111) | def _hydrate_boefje_meta(self, boefje_meta: BoefjeMeta) -> BoefjeMeta: function boefje_env_variables (line 145) | def boefje_env_variables() -> dict: function get_system_env_settings_for_boefje (line 159) | def get_system_env_settings_for_boefje(allowed_keys: list[str]) -> dict: function get_environment_settings (line 163) | def get_environment_settings(boefje_meta: BoefjeMeta, schema: dict | Non... function get_octopoes_api_connector (line 192) | def get_octopoes_api_connector(org_code: str) -> OctopoesAPIConnector: FILE: boefjes/boefjes/config.py class EncryptionMiddleware (line 18) | class EncryptionMiddleware(Enum): class BackwardsCompatibleEnvSettings (line 23) | class BackwardsCompatibleEnvSettings(EnvSettingsSource): method __call__ (line 35) | def __call__(self) -> dict[str, Any]: class Settings (line 52) | class Settings(BaseSettings): method settings_customise_sources (line 145) | def settings_customise_sources( FILE: boefjes/boefjes/dependencies/encryption.py class EncryptMiddleware (line 7) | class EncryptMiddleware(abc.ABC): method encode (line 9) | def encode(self, contents: str) -> str: method decode (line 13) | def decode(self, contents: str) -> str: class IdentityMiddleware (line 17) | class IdentityMiddleware(EncryptMiddleware): method encode (line 18) | def encode(self, contents: str) -> str: method decode (line 21) | def decode(self, contents: str) -> str: class NaclBoxMiddleware (line 25) | class NaclBoxMiddleware(EncryptMiddleware): method __init__ (line 30) | def __init__(self, private_key: str, public_key: str): method encode (line 35) | def encode(self, contents: str) -> str: method decode (line 40) | def decode(self, contents: str) -> str: FILE: boefjes/boefjes/dependencies/plugins.py class PluginService (line 27) | class PluginService: method __init__ (line 28) | def __init__(self, plugin_storage: PluginStorage, config_storage: Conf... method __enter__ (line 33) | def __enter__(self): method __exit__ (line 39) | def __exit__(self, exc_type, exc_val, exc_tb): method get_all (line 43) | def get_all(self, organisation_id: str) -> list[PluginType]: method _get_all_without_enabled (line 55) | def _get_all_without_enabled(self) -> dict[str, PluginType]: method by_plugin_id (line 63) | def by_plugin_id(self, plugin_id: str, organisation_id: str) -> Plugin... method by_plugin_ids (line 72) | def by_plugin_ids(self, plugin_ids: list[str], organisation_id: str) -... method get_all_settings (line 85) | def get_all_settings(self, organisation_id: str, plugin_id: str): method clone_settings_to_organisation (line 88) | def clone_settings_to_organisation(self, from_organisation: str, to_or... method upsert_settings (line 112) | def upsert_settings(self, settings: dict, organisation_id: str, plugin... method create_boefje (line 118) | def create_boefje(self, boefje: Boefje) -> None: method create_normalizer (line 133) | def create_normalizer(self, normalizer: Normalizer) -> None: method _put_boefje (line 148) | def _put_boefje(self, boefje_id: str) -> None: method _put_normalizer (line 163) | def _put_normalizer(self, normalizer_id: str) -> None: method delete_settings (line 178) | def delete_settings(self, organisation_id: str, plugin_id: str): method schema (line 183) | def schema(self, plugin_id: str) -> dict | None: method cover (line 191) | def cover(self, plugin_id: str) -> Path: method description (line 197) | def description(self, plugin_id: str, organisation_id: str) -> str: method set_enabled_by_id (line 209) | def set_enabled_by_id(self, plugin_id: str, organisation_id: str, enab... method _assert_settings_match_schema (line 219) | def _assert_settings_match_schema(self, all_settings: dict, plugin_id:... function get_plugin_service (line 229) | def get_plugin_service() -> Iterator[PluginService]: function get_pagination_parameters (line 236) | def get_pagination_parameters(offset: int = 0, limit: int | None = None)... function get_plugins_filter_parameters (line 240) | def get_plugins_filter_parameters( FILE: boefjes/boefjes/job_handler.py class DockerBoefjeHandler (line 40) | class DockerBoefjeHandler(BoefjeHandler): method __init__ (line 44) | def __init__(self, scheduler_client: SchedulerAPIClient, bytes_api_cli... method handle (line 49) | def handle(self, task: Task) -> tuple[BoefjeMeta, BoefjeOutput] | None... method copy_raw_files (line 119) | def copy_raw_files( class LocalNormalizerHandler (line 131) | class LocalNormalizerHandler(NormalizerHandler): method __init__ (line 132) | def __init__( method handle (line 144) | def handle(self, task: Task): FILE: boefjes/boefjes/katalogus/configs.py function list_configs (line 16) | def list_configs( FILE: boefjes/boefjes/katalogus/organisations.py function list_organisations (line 12) | def list_organisations(storage: OrganisationStorage = Depends(get_organi... function get_organisation (line 18) | def get_organisation(organisation_id: str, storage: OrganisationStorage ... function add_organisation (line 27) | def add_organisation(organisation: Organisation, storage: OrganisationSt... function upsert_organisation (line 33) | def upsert_organisation(organisation: Organisation, storage: Organisatio... function remove_organisation (line 39) | def remove_organisation(organisation_id: str, storage: OrganisationStora... FILE: boefjes/boefjes/katalogus/plugins.py function _plugin_matches_query (line 28) | def _plugin_matches_query(plugin: PluginType, query: str) -> bool: function list_plugins (line 38) | def list_plugins( function get_plugin (line 89) | def get_plugin( function add_plugin (line 100) | def add_plugin(plugin: PluginType, plugin_service: PluginService = Depen... function update_plugin_state (line 121) | def update_plugin_state( class BoefjeIn (line 131) | class BoefjeIn(BaseModel): method json_schema_valid (line 153) | def json_schema_valid(cls, schema: dict | None) -> dict | None: method cron_valid (line 164) | def cron_valid(cls, cron: str | None) -> str | None: function update_boefje (line 172) | def update_boefje(boefje_id: str, boefje: BoefjeIn, storage: PluginStora... function delete_boefje (line 185) | def delete_boefje(boefje_id: str, plugin_storage: PluginStorage = Depend... class NormalizerIn (line 190) | class NormalizerIn(BaseModel): function update_normalizer (line 205) | def update_normalizer( function delete_normalizer (line 213) | def delete_normalizer(normalizer_id: str, plugin_storage: PluginStorage ... function get_plugin_schema (line 219) | def get_plugin_schema(plugin_id: str, plugin_service: PluginService = De... function get_plugin_cover (line 225) | def get_plugin_cover(plugin_id: str, plugin_service: PluginService = Dep... function get_plugin_description (line 230) | def get_plugin_description( function clone_settings (line 237) | def clone_settings(organisation_id: str, to_org: str, storage: PluginSer... FILE: boefjes/boefjes/katalogus/root.py function entity_not_found_handler (line 54) | def entity_not_found_handler(request: Request, exc: NotFound) -> JSONRes... function not_allowed_handler (line 59) | def not_allowed_handler(request: Request, exc: NotAllowed) -> JSONResponse: function integrity_error_handler (line 64) | def integrity_error_handler(request: Request, exc: IntegrityError) -> JS... function storage_error_handler (line 69) | def storage_error_handler(request: Request, exc: StorageError) -> JSONRe... class ServiceHealth (line 73) | class ServiceHealth(BaseModel): function root (line 85) | def root() -> RedirectResponse: function health (line 90) | def health() -> ServiceHealth: function v1_root (line 95) | def v1_root() -> RedirectResponse: FILE: boefjes/boefjes/katalogus/settings.py function list_settings (line 9) | def list_settings( function upsert_settings (line 17) | def upsert_settings( function remove_settings (line 25) | def remove_settings( FILE: boefjes/boefjes/local/runner.py class LocalNormalizerJobRunner (line 21) | class LocalNormalizerJobRunner(NormalizerJobRunner): method __init__ (line 22) | def __init__(self, local_repository: LocalPluginRepository): method run (line 25) | def run(self, normalizer_meta: NormalizerMeta, raw: bytes) -> Normaliz... method _parse_results (line 46) | def _parse_results(self, normalizer_meta: NormalizerMeta, results: Ite... FILE: boefjes/boefjes/logging.py function configure_logging (line 12) | def configure_logging(): FILE: boefjes/boefjes/migrations/env.py function run_migrations_offline (line 28) | def run_migrations_offline() -> None: function run_migrations_online (line 53) | def run_migrations_online() -> None: FILE: boefjes/boefjes/migrations/versions/0001_add_katalogus_models.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 67) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/0002_change_lengths_of_several_char_fields.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 42) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/0003_longer_plugin_ids.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 34) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/197672984df0_make_organisation_code_field_larger.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 27) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/5be152459a7b_introduce_schema_field_to_boefje_model.py function upgrade (line 26) | def upgrade() -> None: function downgrade (line 48) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/6f99834a4a5a_introduce_boefje_and_normalizer_models.py function upgrade (line 22) | def upgrade() -> None: function downgrade (line 59) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/7c88b9cd96aa_remove_the_repository_model.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 39) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/870fc302b852_remove_environment_keys_field.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 27) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/9f48560b0000_add_schedule_interval_fields.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 26) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/a2c8d54b0124_unique_plugin_names.py function upgrade (line 18) | def upgrade() -> None: function downgrade (line 25) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/cd34fdfafdaf_json_settings_for_settings_table.py function upgrade (line 26) | def upgrade() -> None: function upgrade_encrypted_settings (line 45) | def upgrade_encrypted_settings(conn: Connection) -> None: function downgrade (line 75) | def downgrade() -> None: function downgrade_encrypted_settings (line 97) | def downgrade_encrypted_settings(conn: Connection) -> None: FILE: boefjes/boefjes/migrations/versions/f9de6eb7824b_introduce_boefjeconfig_model.py function upgrade (line 30) | def upgrade() -> None: function downgrade (line 225) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/fc0295b38184_add_run_on_field_to_boefje.py function upgrade (line 22) | def upgrade() -> None: function downgrade (line 29) | def downgrade() -> None: FILE: boefjes/boefjes/migrations/versions/fdeaea4481b8_add_deduplication_flag.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 26) | def downgrade() -> None: FILE: boefjes/boefjes/normalizer_interfaces.py class NormalizerJobRunner (line 5) | class NormalizerJobRunner: method run (line 6) | def run(self, normalizer_meta: NormalizerMeta, raw: bytes) -> Normaliz... FILE: boefjes/boefjes/normalizer_models.py class NormalizerObservation (line 10) | class NormalizerObservation(BaseModel): class NormalizerDeclaration (line 16) | class NormalizerDeclaration(BaseModel): class NormalizerAffirmation (line 22) | class NormalizerAffirmation(BaseModel): class NormalizerResults (line 27) | class NormalizerResults(BaseModel): FILE: boefjes/boefjes/plugins/helpers.py function cpe_to_name_version (line 1) | def cpe_to_name_version(cpe: str) -> tuple[str | None, str | None]: FILE: boefjes/boefjes/plugins/kat_adr_finding_types/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py function run (line 20) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_adr_validator/main.py function run (line 4) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_adr_validator/normalize.py function run (line 10) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_answer_parser/normalize.py function run (line 8) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py function run (line 14) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_burpsuite/normalize.py function find_network (line 17) | def find_network(data: dict) -> dict: function run (line 29) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_calvin/normalize.py function run (line 8) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: function parse_log (line 15) | def parse_log(log: dict) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_censys/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_censys/normalize.py function run (line 15) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_crt_sh/main.py function request_certs (line 32) | def request_certs( function run (line 62) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_crt_sh/normalize.py function run (line 13) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_cve_2023_34039/main.py function run (line 21) | def run(boefje_meta: dict) -> list[tuple[set, str | bytes]]: FILE: boefjes/boefjes/plugins/kat_cve_2023_35078/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, str | bytes]]: FILE: boefjes/boefjes/plugins/kat_cve_2023_35078/normalize.py function extract_js_version (line 12) | def extract_js_version(html_content: str) -> Version | bool: function extract_css_version (line 26) | def extract_css_version(html_content: str) -> Version | bool: function strip_vsp_and_build (line 40) | def strip_vsp_and_build(url: str) -> Iterable[str]: function is_vulnerable_version (line 50) | def is_vulnerable_version(vulnerable_ranges: list[tuple[Version, Version... function run (line 54) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_cve_2024_6387/normalize.py function is_vulnerable (line 31) | def is_vulnerable(banner: str) -> bool: function run (line 55) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_cve_finding_types/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py function get_risk_level (line 20) | def get_risk_level(severity_score): function run (line 27) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_cwe_finding_types/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_dicom/main.py function run (line 7) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_dicom/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_dns/main.py class TimeoutException (line 17) | class TimeoutException(Exception): class ZoneNotFoundException (line 21) | class ZoneNotFoundException(Exception): function get_record_types (line 25) | def get_record_types() -> set[str]: function run (line 35) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function get_parent_zone_soa (line 70) | def get_parent_zone_soa(resolver: dns.resolver.Resolver, name: Name) -> ... function get_email_security_records (line 83) | def get_email_security_records(resolver: dns.resolver.Resolver, hostname... FILE: boefjes/boefjes/plugins/kat_dns/normalize.py function run (line 35) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_dns_version/main.py function run (line 11) | def run(boefje_meta: dict) -> list[tuple[set, str | bytes]]: FILE: boefjes/boefjes/plugins/kat_dns_version/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_dns_zone/main.py class ZoneNotFoundException (line 12) | class ZoneNotFoundException(Exception): function run (line 16) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function get_parent_zone_soa (line 31) | def get_parent_zone_soa(name: Name) -> Answer: FILE: boefjes/boefjes/plugins/kat_dns_zone/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_dnssec/main.py function run_drill (line 5) | def run_drill(domain: str, record_type: str) -> bytes: function run (line 14) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_dnssec/normalize.py function run (line 8) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_export_http/main.py function run (line 10) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_external_db/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_external_db/normalize.py function follow_path_in_dict (line 24) | def follow_path_in_dict(path, path_dict): function get_indemnification_level (line 34) | def get_indemnification_level(path_dict): function run (line 46) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_fierce/fierce.py function fatal (line 31) | def fatal(msg, _return_code=-1): function print_subdomain_result (line 35) | def print_subdomain_result(url, ip, nearby=None): function unvisited_closure (line 44) | def unvisited_closure(): function find_subdomain_list_file (line 56) | def find_subdomain_list_file(filename): function head_request (line 66) | def head_request(url, timeout=2): function concatenate_subdomains (line 79) | def concatenate_subdomains(domain, subdomains): function query (line 90) | def query(resolver, domain, record_type="A", tcp=False): function reverse_query (line 109) | def reverse_query(resolver, ip, tcp=False): function recursive_query (line 113) | def recursive_query(resolver, domain, record_type="NS", tcp=False): function zone_transfer (line 126) | def zone_transfer(address, domain): function get_class_c_network (line 133) | def get_class_c_network(ip): function default_expander (line 141) | def default_expander(ip): function traverse_expander (line 145) | def traverse_expander(ip, n=5): function wide_expander (line 155) | def wide_expander(ip): function range_expander (line 163) | def range_expander(ip): function default_filter (line 174) | def default_filter(address): function search_filter (line 178) | def search_filter(domains, address): function find_nearby (line 182) | def find_nearby(resolver, ips, filter_func=None): function get_stripped_file_lines (line 204) | def get_stripped_file_lines(filename): function get_subdomains (line 217) | def get_subdomains(subdomains, subdomain_filename): function update_resolver_nameservers (line 231) | def update_resolver_nameservers(resolver, nameservers, nameserver_filena... function fierce (line 250) | def fierce(**kwargs): function parse_args (line 337) | def parse_args(args): function main (line 385) | def main(): FILE: boefjes/boefjes/plugins/kat_fierce/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_fierce/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_finding_normalizer/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_green_hosting/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_green_hosting/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_kat_finding_types/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py function run (line 20) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_leakix/main.py function get_api_headers (line 10) | def get_api_headers() -> dict: function get_host_results (line 15) | def get_host_results(ip: str) -> list[dict]: function get_search_results (line 40) | def get_search_results(query: str) -> list[dict]: function run (line 70) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_leakix/normalize.py function run (line 38) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: function handle_autonomous_system (line 111) | def handle_autonomous_system(event): function handle_ip (line 117) | def handle_ip(event, network_reference, as_ooi_reference): function handle_hostname (line 146) | def handle_hostname(event, network_reference): function handle_software (line 157) | def handle_software(event, event_ooi_reference): function handle_leak (line 177) | def handle_leak(event, event_ooi_reference, software_ooi): function handle_tag (line 217) | def handle_tag(event, software_ooi_reference=None, ip_port_ooi_reference... FILE: boefjes/boefjes/plugins/kat_manual/csv/normalize.py function run (line 27) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: function process_csv (line 33) | def process_csv(csv_raw_data: bytes, reference_cache: dict) -> Iterable[... function get_object_type (line 52) | def get_object_type(csv_data: io.StringIO) -> str: function get_ooi_from_csv (line 76) | def get_ooi_from_csv( function get_or_create_reference (line 112) | def get_or_create_reference(ooi_type_name: str, value: str | None, refer... FILE: boefjes/boefjes/plugins/kat_manual/single_ooi/normalize.py function run (line 7) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_masscan/main.py function run_masscan (line 7) | def run_masscan(target_ip: str): function run (line 26) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_masscan/normalize.py function get_ip_ports_and_service (line 11) | def get_ip_ports_and_service(ip_with_ports: dict, network: Network, netb... function run (line 36) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_maxmind_geoip/main.py function run (line 30) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function create_hash (line 53) | def create_hash(data: bytes, algo: str) -> str: function cache_out_of_date (line 58) | def cache_out_of_date() -> bool: function refresh_geoip (line 68) | def refresh_geoip(algo: str) -> dict: function find_geoip_path (line 104) | def find_geoip_path() -> str: function geoip_file_exists (line 111) | def geoip_file_exists() -> bool: function remove_old_geolite_data (line 120) | def remove_old_geolite_data(): FILE: boefjes/boefjes/plugins/kat_maxmind_geoip/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_nikto/main.js function get_config_content (line 8) | function get_config_content(scheme) { FILE: boefjes/boefjes/plugins/kat_nikto/normalize.py function _extract_missing_header (line 54) | def _extract_missing_header(msg: str) -> str | None: function _outdated_software (line 59) | def _outdated_software(msg: str, ooi_ref: Reference) -> Iterable[Normali... function _missing_header (line 74) | def _missing_header(msg: str, ooi_ref: Reference) -> Iterable[Normalizer... function _banner_disclosed (line 80) | def _banner_disclosed(msg: str, ooi_ref: Reference) -> Iterable[Normaliz... function _simple_finding (line 90) | def _simple_finding(finding_type_id: str, msg: str, ooi_ref: Reference) ... function _generic_finding (line 96) | def _generic_finding(msg: str, ooi_ref: Reference) -> Iterable[Normalize... function scan_nikto_output (line 100) | def scan_nikto_output(data: list[dict[str, Any]], ooi_ref: Reference) ->... function run (line 130) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_nikto/oci_adapter.js function b64encode (line 7) | function b64encode(inp) { function main (line 11) | async function main() { FILE: boefjes/boefjes/plugins/kat_nmap_tcp/main.py class UnacceptedVSLM (line 17) | class UnacceptedVSLM(Exception): function validate_ports (line 21) | def validate_ports(ports: str | None) -> str: function parse_input_ooi (line 49) | def parse_input_ooi(input_ooi: dict) -> IPv4Address | IPv6Address | IPv4... function run (line 69) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py function get_ip_ports_and_service (line 13) | def get_ip_ports_and_service(host: NmapHost, network: Network, netblock:... function run (line 55) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_nuclei_cve/main.py function get_target_url (line 4) | def get_target_url(input_ooi: dict) -> str: function run (line 9) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_nuclei_cve/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_nuclei_take_over/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_pdio_subfinder/main.py function run (line 6) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_pdio_subfinder/normalize.py function run (line 8) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_rdns/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_rdns/normalize.py function run (line 14) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_report_data/normalize.py function run (line 7) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py function run (line 4) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py function _hash_identifiers (line 21) | def _hash_identifiers(identifiers: dict[str, str | list[str]]) -> str: function _create_description (line 28) | def _create_description(finding: dict) -> str: function run (line 44) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_rpki/main.py function run (line 35) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function cache_out_of_date (line 106) | def cache_out_of_date(meta_path: Path) -> bool: function refresh_cache (line 119) | def refresh_cache( function create_hash (line 154) | def create_hash(data: bytes, algo: str) -> str: function load_json (line 159) | def load_json(path: Path) -> dict: function load_jsonl (line 165) | def load_jsonl(path: Path) -> list: FILE: boefjes/boefjes/plugins/kat_rpki/normalize.py function run (line 10) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_security_txt_downloader/main.py function run (line 12) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function do_request (line 64) | def do_request(hostname: str, session: Session, uri: str, useragent: str... FILE: boefjes/boefjes/plugins/kat_security_txt_downloader/normalize.py function run (line 14) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_service_banner/main.py function get_sock (line 8) | def get_sock(ip, port, timeout): function get_banner (line 19) | def get_banner(sock, bytescount): function run (line 34) | def run(boefje_meta: dict) -> list[tuple[set, str | bytes]]: FILE: boefjes/boefjes/plugins/kat_shodan/main.py function run (line 9) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_shodan/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_shodan_internetdb/main.py function run (line 9) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_shodan_internetdb/normalize.py function run (line 16) | def run(input_ooi: dict, raw: bytes) -> Iterable[OOI]: FILE: boefjes/boefjes/plugins/kat_snyk/check_version.py class VersionCheck (line 8) | class VersionCheck(Enum): function check_version (line 18) | def check_version(version1: str, version2: str) -> VersionCheck: function check_version_agains_versionlist (line 73) | def check_version_agains_versionlist(my_version: str, all_versions: list... function check_version_in (line 167) | def check_version_in(version: str, versions: str) -> bool: FILE: boefjes/boefjes/plugins/kat_snyk/main.py function run (line 9) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_snyk/normalize.py function run (line 13) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_snyk_finding_types/main.py function run (line 8) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py function get_risk_level (line 20) | def get_risk_level(severity_score): function run (line 27) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_ssl_certificates/main.py function run (line 4) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_ssl_certificates/normalize.py function find_between (line 28) | def find_between(s: str, first: str, last: str) -> str: function run (line 37) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: function read_certificates (line 94) | def read_certificates( FILE: boefjes/boefjes/plugins/kat_ssl_scan/main.py function run (line 7) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_ssl_scan/normalize.py function run (line 10) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_testssl_sh_ciphers/main.py function run (line 22) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalize.py function parse_cipher (line 10) | def parse_cipher(cipher: dict) -> dict[str, Any] | None: function run (line 42) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_wappalyzer/normalize.py function run (line 37) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: function analyze_script_src_in_html (line 95) | def analyze_script_src_in_html(har: HarWrapper, fingerprint: schemas.Fin... FILE: boefjes/boefjes/plugins/kat_wappalyzer/utils.py function replace_cpe_version (line 5) | def replace_cpe_version(cpe: str, version: str) -> str: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/check_images/normalize.py function run (line 13) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py function run (line 12) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/har/httpx.py function create_har_object (line 14) | def create_har_object(response: httpx.Response) -> dict: function map_request (line 34) | def map_request(request: httpx.Request) -> dict: function map_response (line 63) | def map_response(response: httpx.Response) -> dict: function map_cookie (line 81) | def map_cookie(cookie: Cookie) -> dict: function _name_value_pairs (line 94) | def _name_value_pairs(iterable: Iterable) -> Sequence[dict]: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/har/requests.py function create_har_object (line 15) | def create_har_object(response: requests.Response) -> dict: function map_request (line 35) | def map_request(request: requests.PreparedRequest) -> dict: function map_response (line 64) | def map_response(response: requests.Response) -> dict: function map_cookie (line 82) | def map_cookie(cookie: Cookie) -> dict: function _name_value_pairs (line 95) | def _name_value_pairs(iterable: Iterable) -> Sequence[dict]: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/headers/normalize.py function run (line 9) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/plugins/kat_webpage_analysis/main.py function run (line 17) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: function do_request (line 71) | def do_request(hostname: str, session: Session, uri: str, useragent: str): function get_uri (line 79) | def get_uri(input_: dict) -> str: FILE: boefjes/boefjes/plugins/kat_webpage_capture/main.py class WebpageCaptureException (line 7) | class WebpageCaptureException(Exception): method __init__ (line 10) | def __init__(self, message: str, container_log: str): method __str__ (line 14) | def __str__(self) -> str: function build_playwright_command (line 18) | def build_playwright_command(webpage: str, browser: str, tmp_path: str) ... function run_playwright (line 35) | def run_playwright(webpage: str, browser: str) -> tuple[bytes, bytes, by... function run (line 55) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_wpscan/main.py function run (line 7) | def run(boefje_meta: dict) -> list[tuple[set, bytes | str]]: FILE: boefjes/boefjes/plugins/kat_wpscan/normalize.py function run (line 11) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/boefjes/sql/config_storage.py class SQLConfigStorage (line 19) | class SQLConfigStorage(SessionMixin, ConfigStorage): method __init__ (line 20) | def __init__(self, session: Session, encryption: EncryptMiddleware): method list_boefje_configs (line 25) | def list_boefje_configs( method upsert (line 80) | def upsert( method get_all_settings (line 125) | def get_all_settings(self, organisation_id: str, plugin_id: str) -> dict: method _convert_settings (line 135) | def _convert_settings(self, instance): method delete (line 142) | def delete(self, organisation_id: str, plugin_id: str) -> None: method is_enabled_by_id (line 147) | def is_enabled_by_id(self, plugin_id: str, organisation_id: str) -> bool: method get_enabled_boefjes (line 152) | def get_enabled_boefjes(self, organisation_id: str) -> list[str]: method get_enabled_normalizers (line 164) | def get_enabled_normalizers(self, organisation_id: str) -> list[str]: method get_disabled_boefjes (line 177) | def get_disabled_boefjes(self, organisation_id: str) -> list[str]: method get_disabled_normalizers (line 189) | def get_disabled_normalizers(self, organisation_id: str) -> list[str]: method get_states_for_organisation (line 202) | def get_states_for_organisation(self, organisation_id: str) -> dict[st... method _db_instance_by_id (line 222) | def _db_instance_by_id(self, organisation_id: str, plugin_id: str) -> ... method _to_boefje_config (line 253) | def _to_boefje_config(self, boefe_config_in_db: BoefjeConfigInDB) -> B... function create_config_storage (line 263) | def create_config_storage(session) -> ConfigStorage: function get_config_storage (line 268) | def get_config_storage() -> Iterator[ConfigStorage]: function create_encrypter (line 272) | def create_encrypter(): FILE: boefjes/boefjes/sql/db.py function get_engine (line 19) | def get_engine() -> Engine: function session_managed_iterator (line 37) | def session_managed_iterator(service_factory: Callable[[Session], Any]) ... class ObjectNotFoundException (line 54) | class ObjectNotFoundException(Exception): method __init__ (line 55) | def __init__(self, cls: type | UnionType, **kwargs): FILE: boefjes/boefjes/sql/db_models.py class ScanLevel (line 10) | class ScanLevel(Enum): class RunOnDB (line 18) | class RunOnDB(Enum): method from_run_ons (line 24) | def from_run_ons(cls, run_ons: list[RunOn] | None): method to_run_ons (line 38) | def to_run_ons(self) -> list[RunOn]: class OrganisationInDB (line 48) | class OrganisationInDB(SQL_BASE): class BoefjeConfigInDB (line 57) | class BoefjeConfigInDB(SQL_BASE): class NormalizerConfigInDB (line 73) | class NormalizerConfigInDB(SQL_BASE): class BoefjeInDB (line 89) | class BoefjeInDB(SQL_BASE): class NormalizerInDB (line 117) | class NormalizerInDB(SQL_BASE): FILE: boefjes/boefjes/sql/organisation_storage.py class SQLOrganisationStorage (line 16) | class SQLOrganisationStorage(SessionMixin, OrganisationStorage): method __init__ (line 17) | def __init__(self, session: Session, app_settings: Settings): method get_by_id (line 22) | def get_by_id(self, organisation_id: str) -> Organisation: method get_all (line 27) | def get_all(self) -> dict[str, Organisation]: method create (line 32) | def create(self, organisation: Organisation) -> None: method update (line 38) | def update(self, organisation: Organisation) -> None: method delete_by_id (line 43) | def delete_by_id(self, organisation_id: str) -> None: method _db_instance_by_id (line 48) | def _db_instance_by_id(self, organisation_id: str) -> OrganisationInDB: method to_organisation_in_db (line 59) | def to_organisation_in_db(organisation: Organisation) -> OrganisationI... method to_organisation (line 63) | def to_organisation(organisation_in_db: OrganisationInDB) -> Organisat... function create_organisation_storage (line 69) | def create_organisation_storage(session: Session) -> SQLOrganisationStor... function get_organisations_store (line 73) | def get_organisations_store() -> Iterator[OrganisationStorage]: FILE: boefjes/boefjes/sql/plugin_storage.py class SQLPluginStorage (line 16) | class SQLPluginStorage(SessionMixin, PluginStorage): method __init__ (line 17) | def __init__(self, session: Session, app_settings: Settings): method get_all (line 22) | def get_all(self) -> list[PluginType]: method boefje_by_id (line 27) | def boefje_by_id(self, boefje_id: str) -> Boefje: method normalizer_by_id (line 32) | def normalizer_by_id(self, normalizer_id: str) -> Normalizer: method create_boefje (line 37) | def create_boefje(self, boefje: Boefje) -> None: method update_boefje (line 43) | def update_boefje(self, boefje_id: str, data: dict) -> None: method create_normalizer (line 55) | def create_normalizer(self, normalizer: Normalizer) -> None: method update_normalizer (line 61) | def update_normalizer(self, normalizer_id: str, data: dict) -> None: method delete_boefje_by_id (line 73) | def delete_boefje_by_id(self, boefje_id: str) -> None: method delete_normalizer_by_id (line 78) | def delete_normalizer_by_id(self, normalizer_id: str) -> None: method _db_boefje_instance_by_id (line 83) | def _db_boefje_instance_by_id(self, boefje_id: str) -> BoefjeInDB: method _db_normalizer_instance_by_id (line 91) | def _db_normalizer_instance_by_id(self, normalizer_id: str) -> Normali... method to_boefje_in_db (line 100) | def to_boefje_in_db(boefje: Boefje, pk: int | None = None) -> BoefjeInDB: method to_normalizer_in_db (line 127) | def to_normalizer_in_db(normalizer: Normalizer, pk: int | None = None)... method to_boefje (line 145) | def to_boefje(boefje_in_db: BoefjeInDB) -> Boefje: method to_normalizer (line 167) | def to_normalizer(normalizer_in_db: NormalizerInDB) -> Normalizer: function create_plugin_storage (line 181) | def create_plugin_storage(session) -> SQLPluginStorage: function get_plugin_storage (line 185) | def get_plugin_storage() -> Iterator[PluginStorage]: FILE: boefjes/boefjes/sql/session.py class SessionMixin (line 12) | class SessionMixin: method __init__ (line 25) | def __init__(self, session: Session): method __enter__ (line 30) | def __enter__(self) -> Self: method __exit__ (line 38) | def __exit__(self, exc_type: type[Exception], exc_value: str, exc_trac... FILE: boefjes/boefjes/storage/interfaces.py class StorageError (line 7) | class StorageError(Exception): method __init__ (line 10) | def __init__(self, message: str): class IntegrityError (line 14) | class IntegrityError(StorageError): method __init__ (line 17) | def __init__(self, message: str): class UniqueViolation (line 21) | class UniqueViolation(IntegrityError): method __init__ (line 22) | def __init__(self, message: str): method _get_field_name (line 26) | def _get_field_name(self, message: str) -> str | None: class SettingsNotConformingToSchema (line 35) | class SettingsNotConformingToSchema(StorageError): method __init__ (line 36) | def __init__(self, plugin_id: str, validation_error: str): class NotFound (line 40) | class NotFound(StorageError): class OrganisationNotFound (line 44) | class OrganisationNotFound(NotFound): method __init__ (line 45) | def __init__(self, organisation_id: str): class PluginNotFound (line 49) | class PluginNotFound(NotFound): method __init__ (line 50) | def __init__(self, plugin_id: str): class PluginStateNotFound (line 54) | class PluginStateNotFound(NotFound): method __init__ (line 55) | def __init__(self, plugin_id: str, organisation_id: str): class ConfigNotFound (line 59) | class ConfigNotFound(NotFound): method __init__ (line 60) | def __init__(self, organisation_id: str, plugin_id: str): class NotAllowed (line 64) | class NotAllowed(StorageError): class CannotUpdateStaticPlugin (line 68) | class CannotUpdateStaticPlugin(NotAllowed): method __init__ (line 69) | def __init__(self, plugin_id: str): class DuplicatePlugin (line 73) | class DuplicatePlugin(NotAllowed): method __init__ (line 74) | def __init__(self, field: str | None): class OrganisationStorage (line 78) | class OrganisationStorage(ABC): method __enter__ (line 79) | def __enter__(self): method __exit__ (line 82) | def __exit__(self, exc_type: type[Exception], exc_value: str, exc_trac... method get_by_id (line 85) | def get_by_id(self, organisation_id: str) -> Organisation: method get_all (line 88) | def get_all(self) -> dict[str, Organisation]: method create (line 91) | def create(self, organisation: Organisation) -> None: method update (line 94) | def update(self, organisation: Organisation) -> None: method delete_by_id (line 97) | def delete_by_id(self, organisation_id: str) -> None: class PluginStorage (line 101) | class PluginStorage(ABC): method __enter__ (line 102) | def __enter__(self): method __exit__ (line 105) | def __exit__(self, exc_type: type[Exception], exc_value: str, exc_trac... method get_all (line 108) | def get_all(self) -> list[PluginType]: method boefje_by_id (line 111) | def boefje_by_id(self, boefje_id: str) -> Boefje: method normalizer_by_id (line 114) | def normalizer_by_id(self, normalizer_id: str) -> Normalizer: method create_boefje (line 117) | def create_boefje(self, boefje: Boefje) -> None: method create_normalizer (line 120) | def create_normalizer(self, normalizer: Normalizer) -> None: method update_boefje (line 123) | def update_boefje(self, boefje_id: str, data: dict) -> None: method update_normalizer (line 126) | def update_normalizer(self, normalizer_id: str, data: dict) -> None: method delete_boefje_by_id (line 129) | def delete_boefje_by_id(self, boefje_id: str) -> None: method delete_normalizer_by_id (line 132) | def delete_normalizer_by_id(self, normalizer_id: str) -> None: class ConfigStorage (line 136) | class ConfigStorage(ABC): method __enter__ (line 137) | def __enter__(self): method __exit__ (line 140) | def __exit__(self, exc_type: type[Exception], exc_value: str, exc_trac... method get_all_settings (line 143) | def get_all_settings(self, organisation_id: str, plugin_id: str) -> di... method upsert (line 146) | def upsert( method delete (line 151) | def delete(self, organisation_id: str, plugin_id: str) -> None: method is_enabled_by_id (line 154) | def is_enabled_by_id(self, plugin_id: str, organisation_id: str) -> bool: method get_enabled_boefjes (line 157) | def get_enabled_boefjes(self, organisation_id: str) -> list[str]: method get_enabled_normalizers (line 160) | def get_enabled_normalizers(self, organisation_id: str) -> list[str]: method get_disabled_boefjes (line 163) | def get_disabled_boefjes(self, organisation_id: str) -> list[str]: method get_disabled_normalizers (line 166) | def get_disabled_normalizers(self, organisation_id: str) -> list[str]: method get_states_for_organisation (line 169) | def get_states_for_organisation(self, organisation_id: str) -> dict[st... method list_boefje_configs (line 172) | def list_boefje_configs( FILE: boefjes/boefjes/storage/memory.py class OrganisationStorageMemory (line 11) | class OrganisationStorageMemory(OrganisationStorage): method __init__ (line 12) | def __init__(self, defaults: dict[str, Organisation] | None = None): method get_by_id (line 15) | def get_by_id(self, organisation_id: str) -> Organisation: method get_all (line 18) | def get_all(self) -> dict[str, Organisation]: method create (line 21) | def create(self, organisation: Organisation) -> None: method update (line 24) | def update(self, organisation: Organisation) -> None: method delete_by_id (line 27) | def delete_by_id(self, organisation_id: str) -> None: class PluginStorageMemory (line 31) | class PluginStorageMemory(PluginStorage): method __init__ (line 32) | def __init__(self): method get_all (line 36) | def get_all(self) -> list[PluginType]: method boefje_by_id (line 39) | def boefje_by_id(self, boefje_id: str) -> Boefje: method normalizer_by_id (line 45) | def normalizer_by_id(self, normalizer_id: str) -> Normalizer: method create_boefje (line 51) | def create_boefje(self, boefje: Boefje) -> None: method create_normalizer (line 54) | def create_normalizer(self, normalizer: Normalizer) -> None: method update_boefje (line 57) | def update_boefje(self, boefje_id: str, data: dict) -> None: method update_normalizer (line 69) | def update_normalizer(self, normalizer_id: str, data: dict) -> None: method delete_boefje_by_id (line 81) | def delete_boefje_by_id(self, boefje_id: str) -> None: method delete_normalizer_by_id (line 84) | def delete_normalizer_by_id(self, normalizer_id: str) -> None: class ConfigStorageMemory (line 88) | class ConfigStorageMemory(ConfigStorage): method __init__ (line 89) | def __init__(self): method get_all_settings (line 93) | def get_all_settings(self, organisation_id: str, plugin_id: str) -> di... method upsert (line 99) | def upsert( method delete (line 114) | def delete(self, organisation_id: str, plugin_id: str) -> None: method is_enabled_by_id (line 117) | def is_enabled_by_id(self, plugin_id: str, organisation_id: str) -> bool: method get_enabled_boefjes (line 123) | def get_enabled_boefjes(self, organisation_id: str) -> list[str]: method get_enabled_normalizers (line 130) | def get_enabled_normalizers(self, organisation_id: str) -> list[str]: method get_disabled_boefjes (line 137) | def get_disabled_boefjes(self, organisation_id: str) -> list[str]: method get_disabled_normalizers (line 144) | def get_disabled_normalizers(self, organisation_id: str) -> list[str]: method get_states_for_organisation (line 151) | def get_states_for_organisation(self, organisation_id: str) -> dict[st... method list_boefje_configs (line 154) | def list_boefje_configs( FILE: boefjes/boefjes/worker/__main__.py function cli (line 51) | def cli(plugins: tuple[str] | None, log_level: str, input_url: str) -> N... FILE: boefjes/boefjes/worker/boefje_handler.py class TemporaryEnvironment (line 18) | class TemporaryEnvironment: method __init__ (line 21) | def __init__(self, additional_environment: dict): method __enter__ (line 25) | def __enter__(self): method __exit__ (line 28) | def __exit__(self, exc_type, exc_val, exc_tb): function _copy_raw_files (line 33) | def _copy_raw_files( class LocalBoefjeHandler (line 48) | class LocalBoefjeHandler(BoefjeHandler): method __init__ (line 49) | def __init__(self, local_repository: LocalPluginRepository, boefje_sto... method handle (line 53) | def handle(self, task: Task) -> tuple[BoefjeMeta, BoefjeOutput] | None... method copy_raw_files (line 134) | def copy_raw_files( FILE: boefjes/boefjes/worker/client.py class BoefjeAPIClient (line 12) | class BoefjeAPIClient(SchedulerClientInterface, BoefjeStorageInterface): method __init__ (line 13) | def __init__( method _verify_response (line 25) | def _verify_response(response: Response) -> None: method pop_items (line 28) | def pop_items( method push_item (line 51) | def push_item(self, p_item: Task) -> None: method patch_task (line 57) | def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: method get_task (line 61) | def get_task(self, task_id: uuid.UUID, hydrate: bool = True) -> Task: method save_output (line 69) | def save_output(self, boefje_meta: BoefjeMeta, boefje_output: BoefjeOu... FILE: boefjes/boefjes/worker/interfaces.py class JobRuntimeError (line 12) | class JobRuntimeError(RuntimeError): class Queue (line 16) | class Queue(BaseModel): class TaskStatus (line 21) | class TaskStatus(Enum): class Task (line 33) | class Task(BaseModel): class TaskPop (line 47) | class TaskPop(BaseModel): class StatusEnum (line 51) | class StatusEnum(str, Enum): class File (line 56) | class File(BaseModel): class BoefjeInput (line 62) | class BoefjeInput(BaseModel): class BoefjeOutput (line 68) | class BoefjeOutput(BaseModel): class WorkerManager (line 73) | class WorkerManager: class Queue (line 74) | class Queue(Enum): method run (line 78) | def run(self, queue: Queue) -> None: class BoefjeHandler (line 82) | class BoefjeHandler: method handle (line 83) | def handle(self, task: Task) -> tuple[BoefjeMeta, BoefjeOutput] | None... method copy_raw_files (line 94) | def copy_raw_files( class NormalizerHandler (line 100) | class NormalizerHandler: method handle (line 101) | def handle(self, task: Task) -> None: class PaginatedTasksResponse (line 105) | class PaginatedTasksResponse(BaseModel): class SchedulerClientInterface (line 112) | class SchedulerClientInterface: method pop_items (line 113) | def pop_items( method patch_task (line 118) | def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: method get_task (line 121) | def get_task(self, task_id: uuid.UUID, hydrate: bool = True) -> Task: method push_item (line 124) | def push_item(self, p_item: Task) -> None: class BoefjeStorageInterface (line 128) | class BoefjeStorageInterface: method save_output (line 129) | def save_output(self, boefje_meta: BoefjeMeta, boefje_output: BoefjeOu... FILE: boefjes/boefjes/worker/job_models.py class JobException (line 9) | class JobException(Exception): method __init__ (line 12) | def __init__(self, message: str): class Job (line 16) | class Job(BaseModel): method runtime (line 22) | def runtime(self) -> timedelta | None: class Boefje (line 29) | class Boefje(BaseModel): class BoefjeMeta (line 37) | class BoefjeMeta(Job): class RawDataMeta (line 46) | class RawDataMeta(BaseModel): class Normalizer (line 52) | class Normalizer(BaseModel): class NormalizerMeta (line 59) | class NormalizerMeta(Job): class ObservationsWithoutInputOOI (line 64) | class ObservationsWithoutInputOOI(JobException): method __init__ (line 65) | def __init__(self, normalizer_meta: NormalizerMeta): class InvalidReturnValueNormalizer (line 74) | class InvalidReturnValueNormalizer(JobException): FILE: boefjes/boefjes/worker/manager.py class SchedulerWorkerManager (line 22) | class SchedulerWorkerManager(WorkerManager): method __init__ (line 23) | def __init__( method run (line 46) | def run(self, queue_type: WorkerManager.Queue) -> None: method _fill_queue (line 82) | def _fill_queue(self, queue_type: WorkerManager.Queue) -> None: method _replace_broken_workers (line 127) | def _replace_broken_workers(self) -> None: method _cleanup_pending_worker_task (line 164) | def _cleanup_pending_worker_task(self, worker: BaseProcess) -> None: method _worker_args (line 183) | def _worker_args(self) -> tuple: method exit (line 186) | def exit(self, signum: int | None = None) -> None: function _format_exit_code (line 224) | def _format_exit_code(exitcode: int | None) -> str: function _start_working (line 231) | def _start_working( FILE: boefjes/boefjes/worker/models.py class RunOn (line 16) | class RunOn(Enum): method __lt__ (line 20) | def __lt__(self, other): class Organisation (line 24) | class Organisation(BaseModel): class Plugin (line 30) | class Plugin(BaseModel): method __str__ (line 39) | def __str__(self): class Boefje (line 43) | class Boefje(Plugin): method json_schema_valid (line 59) | def json_schema_valid(cls, schema: dict) -> dict: method cron_valid (line 70) | def cron_valid(cls, cron: str | None) -> str | None: class Config (line 76) | class Config: class BoefjeConfig (line 80) | class BoefjeConfig(BaseModel): class Normalizer (line 91) | class Normalizer(Plugin): class Bit (line 98) | class Bit(Plugin): class PaginationParameters (line 109) | class PaginationParameters(BaseModel): class FilterParameters (line 114) | class FilterParameters(BaseModel): FILE: boefjes/boefjes/worker/oci_adapter.py class CallbackStorageClient (line 16) | class CallbackStorageClient(BoefjeStorageInterface): method __init__ (line 17) | def __init__(self, base_url: str, callback_url: str, outgoing_request_... method save_output (line 21) | def save_output(self, boefje_meta: BoefjeMeta, boefje_output: BoefjeOu... function run_with_callback (line 28) | def run_with_callback(input_url: str): FILE: boefjes/boefjes/worker/repository.py class ModuleException (line 27) | class ModuleException(Exception): class Runnable (line 31) | class Runnable(Protocol): method run (line 32) | def run(self, *args, **kwargs): class BoefjeResource (line 36) | class BoefjeResource: method __init__ (line 39) | def __init__(self, path: Path, package: str, path_hash: str): class NormalizerResource (line 61) | class NormalizerResource: method __init__ (line 64) | def __init__(self, path: Path, package: str): class LocalPluginRepository (line 71) | class LocalPluginRepository: method __init__ (line 72) | def __init__(self, path: Path): method get_all (line 75) | def get_all(self) -> list[PluginType]: method by_id (line 80) | def by_id(self, plugin_id: str) -> BoefjeResource | NormalizerResource: method by_image (line 93) | def by_image(self, image: str) -> BoefjeResource: method by_name (line 102) | def by_name(self, plugin_name: str) -> BoefjeResource | NormalizerReso... method schema (line 115) | def schema(self, id_: str) -> dict | None: method cover_path (line 129) | def cover_path(self, plugin_id: str) -> Path: method default_cover_path (line 150) | def default_cover_path(self) -> Path: method description_path (line 153) | def description_path(self, id_: str) -> Path | None: method resolve_boefjes (line 161) | def resolve_boefjes(self) -> dict[str, BoefjeResource]: method resolve_normalizers (line 164) | def resolve_normalizers(self) -> dict[str, NormalizerResource]: function _cached_resolve_boefjes (line 169) | def _cached_resolve_boefjes(path: Path) -> dict[str, BoefjeResource]: function _cached_resolve_normalizers (line 183) | def _cached_resolve_normalizers(path: Path) -> dict[str, NormalizerResou... function _find_packages_in_path_containing_files (line 198) | def _find_packages_in_path_containing_files(path: Path, required_files: ... function create_relative_import_statement_from_cwd (line 219) | def create_relative_import_statement_from_cwd(package_dir: Path) -> str: function get_boefje_resource (line 226) | def get_boefje_resource(path: Path, package: str, path_hash: str): function get_normalizer_resource (line 234) | def get_normalizer_resource(path: Path, package: str, path_hash: str): function get_local_repository (line 241) | def get_local_repository(): function get_runnable_module_from_package (line 245) | def get_runnable_module_from_package(package: str, module_file: str, *, ... function hash_path (line 262) | def hash_path(path: Path) -> str: function _default_mime_types (line 278) | def _default_mime_types(boefje: Boefje) -> set: FILE: boefjes/export_migrations/0001_add_katalogus_models.sql type organisation (line 2) | CREATE TABLE organisation ( type repository (line 9) | CREATE TABLE repository ( type organisation_repository (line 17) | CREATE TABLE organisation_repository ( type setting (line 24) | CREATE TABLE setting ( type plugin_state (line 33) | CREATE TABLE plugin_state ( FILE: boefjes/export_migrations/0005_cd34fdfafdaf_json_settings_for_settings_table.sql type settings (line 4) | CREATE TABLE settings ( FILE: boefjes/export_migrations/0007_6f99834a4a5a_introduce_boefje_and_normalizer_models.sql type boefje (line 3) | CREATE TABLE boefje ( type normalizer (line 20) | CREATE TABLE normalizer ( FILE: boefjes/export_migrations/0008_f9de6eb7824b_introduce_boefjeconfig_model.sql type boefje_config (line 1) | CREATE TABLE boefje_config ( type normalizer_config (line 15) | CREATE TABLE normalizer_config ( FILE: boefjes/tests/conftest.py class MockSchedulerClient (line 62) | class MockSchedulerClient(SchedulerClientInterface): method __init__ (line 63) | def __init__( method pop_items (line 86) | def pop_items( method patch_task (line 111) | def patch_task(self, task_id: UUID, status: TaskStatus) -> None: method get_all_patched_tasks (line 119) | def get_all_patched_tasks(self) -> list[tuple[str, ...]]: method get_task (line 123) | def get_task(self, task_id: UUID, hydrate: bool = True) -> Task: method _task_from_id (line 126) | def _task_from_id(self, task_id: UUID): method push_item (line 129) | def push_item(self, p_item: Task) -> None: class MockBytesAPIClient (line 133) | class MockBytesAPIClient(BoefjeStorageInterface): method __init__ (line 134) | def __init__(self): method save_output (line 137) | def save_output(self, boefje_meta: BoefjeMeta, boefje_output: BoefjeOu... method save_boefje_meta (line 142) | def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method save_raws (line 145) | def save_raws(self, boefje_meta_id: uuid.UUID, boefje_output: BoefjeOu... method get_all (line 150) | def get_all(self) -> list[BoefjeMeta | NormalizerMeta]: class MockHandler (line 154) | class MockHandler(BoefjeHandler, NormalizerHandler): method __init__ (line 155) | def __init__(self, exception=Exception): method handle (line 161) | def handle(self, task: Task) -> tuple[BoefjeMeta, BoefjeOutput] | None... method copy_raw_files (line 178) | def copy_raw_files( method get_all (line 188) | def get_all(self) -> list[Task]: function clear_caches (line 193) | def clear_caches(): function item_handler (line 201) | def item_handler(tmp_path: Path): function mock_boefje_handler (line 206) | def mock_boefje_handler(mock_local_repository: LocalPluginRepository, mo... function manager (line 211) | def manager(item_handler: MockHandler, tmp_path: Path) -> SchedulerWorke... function api (line 228) | def api(tmp_path): function session (line 235) | def session(): function organisation_storage (line 247) | def organisation_storage(session): function config_storage (line 252) | def config_storage(session): function plugin_storage (line 257) | def plugin_storage(session): function local_repository (line 262) | def local_repository(): function mock_local_repository (line 267) | def mock_local_repository(): function normalizer_runner (line 272) | def normalizer_runner(local_repository: LocalPluginRepository): function mock_normalizer_runner (line 277) | def mock_normalizer_runner(mock_local_repository: LocalPluginRepository): function plugin_service (line 282) | def plugin_service(plugin_storage, config_storage, local_repository): function test_organisation (line 287) | def test_organisation(): function second_test_organisation (line 292) | def second_test_organisation(): function mock_plugin_service (line 297) | def mock_plugin_service(mock_local_repository, test_organisation) -> Plu... function organisation (line 305) | def organisation(organisation_storage, test_organisation) -> Organisation: function second_organisation (line 313) | def second_organisation(organisation_storage, second_test_organisation) ... function unit_test_client (line 321) | def unit_test_client(mock_plugin_service) -> TestClient: function test_client (line 342) | def test_client() -> TestClient: function octopoes_api_connector (line 347) | def octopoes_api_connector(organisation) -> OctopoesAPIConnector: function bytes_client (line 355) | def bytes_client(request) -> BytesAPIClient: function valid_time (line 360) | def valid_time(): function seed_system (line 364) | def seed_system( FILE: boefjes/tests/integration/test_api.py function test_get_local_plugin (line 10) | def test_get_local_plugin(test_client, organisation): function test_create_org (line 18) | def test_create_org(test_client): function test_filter_plugins (line 25) | def test_filter_plugins(test_client, organisation): function test_cannot_add_plugin_reserved_id (line 70) | def test_cannot_add_plugin_reserved_id(test_client, organisation): function test_add_boefje (line 82) | def test_add_boefje(test_client, organisation): function test_enable_boefje (line 101) | def test_enable_boefje(test_client, organisation, second_organisation): function test_run_on (line 111) | def test_run_on(test_client, organisation, second_organisation): function test_cannot_add_static_plugin_with_duplicate_name (line 127) | def test_cannot_add_static_plugin_with_duplicate_name(test_client, organ... function test_cannot_add_plugin_with_duplicate_name (line 138) | def test_cannot_add_plugin_with_duplicate_name(test_client, organisation): function test_delete_boefje (line 157) | def test_delete_boefje(test_client, organisation): function test_add_normalizer (line 168) | def test_add_normalizer(test_client, organisation): function test_delete_normalizer (line 180) | def test_delete_normalizer(test_client, organisation): function test_update_plugins (line 191) | def test_update_plugins(test_client, organisation, second_organisation): function test_cannot_create_boefje_with_invalid_schema (line 216) | def test_cannot_create_boefje_with_invalid_schema(test_client, organisat... function test_schema_is_taken_from_disk (line 224) | def test_schema_is_taken_from_disk(test_client, organisation, session): function test_cannot_set_invalid_cron (line 234) | def test_cannot_set_invalid_cron(test_client, organisation): function test_update_boefje_schema (line 247) | def test_update_boefje_schema(test_client, organisation): function test_cannot_update_static_plugins (line 279) | def test_cannot_update_static_plugins(test_client, organisation): function test_basic_settings_api (line 301) | def test_basic_settings_api(test_client, organisation): function test_clone_settings_and_config_api_shows_both (line 322) | def test_clone_settings_and_config_api_shows_both(test_client, organisat... FILE: boefjes/tests/integration/test_bench.py function test_migration (line 21) | def test_migration( function test_plugins_bench (line 122) | def test_plugins_bench(plugin_service, organisation): FILE: boefjes/tests/integration/test_get_environment.py function test_environment_builds_up_correctly (line 10) | def test_environment_builds_up_correctly(plugin_service: PluginService, ... FILE: boefjes/tests/integration/test_json_settings_encryption_migration.py function migration_197672984df0 (line 16) | def migration_197672984df0() -> Session: function test_setting_to_settings_json (line 34) | def test_setting_to_settings_json(migration_197672984df0): function _collect_entries (line 69) | def _collect_entries(encrypter: NaclBoxMiddleware): FILE: boefjes/tests/integration/test_migration_add_schema_field.py function migration_f9de6eb7824b (line 14) | def migration_f9de6eb7824b(local_repository) -> Session: function test_fail_on_wrong_plugin_ids (line 59) | def test_fail_on_wrong_plugin_ids(migration_f9de6eb7824b): FILE: boefjes/tests/integration/test_remove_repository_migration.py function migration_cd34fdfafdaf (line 14) | def migration_cd34fdfafdaf() -> Session: function test_fail_on_non_unique (line 57) | def test_fail_on_non_unique(migration_cd34fdfafdaf): function test_downgrade (line 86) | def test_downgrade(migration_cd34fdfafdaf): FILE: boefjes/tests/integration/test_settings_to_boefje_config_migration.py function migration_6f99834a4a5a (line 15) | def migration_6f99834a4a5a() -> Session: function test_fail_on_wrong_plugin_ids (line 53) | def test_fail_on_wrong_plugin_ids(migration_6f99834a4a5a): function test_downgrade (line 104) | def test_downgrade(migration_6f99834a4a5a): FILE: boefjes/tests/integration/test_sql_repositories.py function test_organisation_storage (line 12) | def test_organisation_storage(organisation_storage): function test_settings_storage (line 35) | def test_settings_storage(plugin_storage, organisation_storage, config_s... function test_settings_storage_values_respect_field_limits (line 113) | def test_settings_storage_values_respect_field_limits(plugin_storage, or... function test_plugin_enabled_storage (line 149) | def test_plugin_enabled_storage(organisation_storage, plugin_storage, co... function test_bare_boefje_storage (line 190) | def test_bare_boefje_storage(plugin_storage): function test_rich_boefje_storage (line 238) | def test_rich_boefje_storage(plugin_storage): function test_bare_normalizer_storage (line 268) | def test_bare_normalizer_storage(plugin_storage): function test_rich_normalizer_storage (line 295) | def test_rich_normalizer_storage(plugin_storage): function test_plugin_storage (line 322) | def test_plugin_storage(plugin_storage): FILE: boefjes/tests/katalogus/test_organisation_api.py function test_list (line 1) | def test_list(unit_test_client): function test_get_organisation (line 6) | def test_get_organisation(unit_test_client): function test_non_existing_organisation (line 11) | def test_non_existing_organisation(unit_test_client): function test_add_organisation (line 17) | def test_add_organisation(unit_test_client): function test_delete_organisation (line 26) | def test_delete_organisation(unit_test_client): FILE: boefjes/tests/katalogus/test_plugin_service.py function test_get_plugins (line 6) | def test_get_plugins(mock_plugin_service, test_organisation): function test_get_plugin_by_id (line 22) | def test_get_plugin_by_id(mock_plugin_service, test_organisation): function test_update_by_id (line 29) | def test_update_by_id(mock_plugin_service, test_organisation): function test_update_by_id_bad_schema (line 35) | def test_update_by_id_bad_schema(mock_plugin_service, test_organisation): function test_get_schema (line 48) | def test_get_schema(mock_plugin_service): function test_removing_mandatory_setting_does_not_disable_plugin_anymore (line 61) | def test_removing_mandatory_setting_does_not_disable_plugin_anymore(mock... function test_adding_integer_settings_within_given_constraints (line 76) | def test_adding_integer_settings_within_given_constraints(mock_plugin_se... function test_clone_one_setting (line 92) | def test_clone_one_setting(mock_plugin_service, test_organisation): function test_clone_many_settings (line 118) | def test_clone_many_settings(mock_plugin_service, test_organisation): FILE: boefjes/tests/katalogus/test_plugins_api.py function test_list (line 1) | def test_list(unit_test_client): function test_list_filter_by_type (line 9) | def test_list_filter_by_type(unit_test_client): function test_list_filter_by_state (line 15) | def test_list_filter_by_state(unit_test_client): function test_list_filter_by_id (line 22) | def test_list_filter_by_id(unit_test_client): function test_list_pagination (line 28) | def test_list_pagination(unit_test_client): function test_list_plugins (line 34) | def test_list_plugins(unit_test_client): function test_get_plugin (line 42) | def test_get_plugin(unit_test_client): function test_non_existing_plugin (line 49) | def test_non_existing_plugin(unit_test_client): function test_default_enabled_property_list (line 54) | def test_default_enabled_property_list(unit_test_client): function test_patching_enabled_state (line 60) | def test_patching_enabled_state(unit_test_client): function test_patching_enabled_state_non_existing_org (line 75) | def test_patching_enabled_state_non_existing_org(unit_test_client): FILE: boefjes/tests/katalogus/test_settings.py function test_encode_decode (line 8) | def test_encode_decode(): FILE: boefjes/tests/loading.py function get_dummy_data (line 10) | def get_dummy_data(filename: str) -> bytes: function get_task (line 15) | def get_task( function get_boefje_meta (line 32) | def get_boefje_meta( function get_normalizer_meta (line 48) | def get_normalizer_meta( function get_raw_data_meta (line 60) | def get_raw_data_meta( FILE: boefjes/tests/modules/dummy_bad_normalizer_dict_structure/normalize.py function run (line 6) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/tests/modules/dummy_bad_normalizer_return_type/normalize.py function run (line 6) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/tests/modules/dummy_boefje/main.py function run (line 4) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/dummy_boefje_environment/main.py function run (line 6) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/dummy_boefje_environment_with_pycache/main.py function run (line 6) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/dummy_boefje_invalid_signature/main.py function run (line 4) | def run(boefje_meta: str) -> tuple[str, int]: FILE: boefjes/tests/modules/dummy_boefje_runtime_exception/main.py function run (line 4) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/dummy_normalizer/normalize.py function run (line 7) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/tests/modules/kat_test/kat_test_2/kat_test_3/normalize.py function run (line 7) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/tests/modules/kat_test/kat_test_2/main.py function run (line 4) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/kat_test/main.py function run (line 4) | def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: FILE: boefjes/tests/modules/kat_test/normalize.py function run (line 7) | def run(input_ooi: dict, raw: bytes) -> Iterable[NormalizerOutput]: FILE: boefjes/tests/plugins/test_adr_validator.py function test_no_findings (line 5) | def test_no_findings(normalizer_runner): function test_with_findings (line 24) | def test_with_findings(normalizer_runner): FILE: boefjes/tests/plugins/test_answer_parser.py function test_config_yielded (line 8) | def test_config_yielded(normalizer_runner): FILE: boefjes/tests/plugins/test_bodyimage.py function test_website_analysis (line 10) | def test_website_analysis(local_repository, mocker): function test_website_analysis_for_image (line 30) | def test_website_analysis_for_image(mocker): function test_body_image_normalizer (line 47) | def test_body_image_normalizer(normalizer_runner): function test_body_normalizer (line 72) | def test_body_normalizer(normalizer_runner): FILE: boefjes/tests/plugins/test_calvin.py function test_parse_user_changed (line 6) | def test_parse_user_changed(normalizer_runner): function test_parse_admin_login_failure (line 62) | def test_parse_admin_login_failure(normalizer_runner): function test_parse_user_login_failure (line 95) | def test_parse_user_login_failure(normalizer_runner): FILE: boefjes/tests/plugins/test_cve-2023-35078.py function test_vulnerable_version_11_8 (line 6) | def test_vulnerable_version_11_8(): function test_vulnerable_version_11_9 (line 12) | def test_vulnerable_version_11_9(): function test_vulnerable_version_11_10 (line 18) | def test_vulnerable_version_11_10(): function test_patched_version_11_9 (line 24) | def test_patched_version_11_9(): function test_equal_to_patched_version_11_9 (line 30) | def test_equal_to_patched_version_11_9(): function test_cve_2023_35078_vulnerable (line 36) | def test_cve_2023_35078_vulnerable(mocker): function test_cve_2023_35078_not_vulnerable (line 42) | def test_cve_2023_35078_not_vulnerable(mocker): FILE: boefjes/tests/plugins/test_cve-2024-6387.py function test_is_vulnerable (line 4) | def test_is_vulnerable(): FILE: boefjes/tests/plugins/test_cve_finding_types.py function test_cve_with_cvss (line 8) | def test_cve_with_cvss(): function test_cve_with_cvss2 (line 29) | def test_cve_with_cvss2(): function test_cve_without_cvss (line 51) | def test_cve_without_cvss(): FILE: boefjes/tests/plugins/test_dns.py function test_dns_normalizer (line 30) | def test_dns_normalizer(normalizer_runner): function test_dns_normalizer_cname (line 124) | def test_dns_normalizer_cname(normalizer_runner): function test_parse_record_null_mx_record (line 193) | def test_parse_record_null_mx_record(normalizer_runner): function test_parse_cname_soa (line 229) | def test_parse_cname_soa(normalizer_runner): function test_find_parent_dns_zone (line 317) | def test_find_parent_dns_zone(normalizer_runner): function test_exception_raised_no_input_ooi (line 369) | def test_exception_raised_no_input_ooi(normalizer_runner): FILE: boefjes/tests/plugins/test_dnssec.py function test_dnssec_unsigned (line 7) | def test_dnssec_unsigned(): function test_dnssec_invalid (line 14) | def test_dnssec_invalid(): function test_dnssec_valid (line 21) | def test_dnssec_valid(): function test_dnssec_status_line_not_last_line (line 28) | def test_dnssec_status_line_not_last_line(): FILE: boefjes/tests/plugins/test_fierce.py function test_fierce (line 11) | def test_fierce(): FILE: boefjes/tests/plugins/test_generic_finding_normalizer.py function test_single (line 7) | def test_single(): function test_multiple (line 24) | def test_multiple(): FILE: boefjes/tests/plugins/test_leakix.py function test_output (line 12) | def test_output(): function _get_hostname_input_ooi (line 30) | def _get_hostname_input_ooi(): function test_strict_mode_filters_hostname_subdomains (line 36) | def test_strict_mode_filters_hostname_subdomains(): function test_permissive_mode_keeps_all_hostname_results (line 56) | def test_permissive_mode_keeps_all_hostname_results(): FILE: boefjes/tests/plugins/test_manual.py function test_parse_manual_declarations (line 44) | def test_parse_manual_declarations(normalizer_runner): function test_parse_manual_hostname_csv (line 67) | def test_parse_manual_hostname_csv(normalizer_runner): function test_parse_manual_ip_csv (line 97) | def test_parse_manual_ip_csv(normalizer_runner): function test_parse_url_csv (line 122) | def test_parse_url_csv(normalizer_runner): function check_network_created (line 149) | def check_network_created( FILE: boefjes/tests/plugins/test_nmap.py function test_normalizer (line 12) | def test_normalizer(): function get_pattern (line 28) | def get_pattern(): function test_single_port_pattern (line 36) | def test_single_port_pattern(local_repository): function test_bad_single_port_pattern (line 43) | def test_bad_single_port_pattern(local_repository): function test_multi_ports_pattern (line 51) | def test_multi_ports_pattern(local_repository): function test_port_range_pattern (line 58) | def test_port_range_pattern(local_repository): function test_combined (line 65) | def test_combined(local_repository): function test_badly_combined (line 72) | def test_badly_combined(local_repository): FILE: boefjes/tests/plugins/test_rdns.py function test_rdns_nxdomain (line 10) | def test_rdns_nxdomain(): function test_rdns_answer_1 (line 37) | def test_rdns_answer_1(): function test_rdns_answer_2 (line 43) | def test_rdns_answer_2(): FILE: boefjes/tests/plugins/test_report_data.py function test_report_data (line 8) | def test_report_data(normalizer_runner): FILE: boefjes/tests/plugins/test_scan_profiles.py function test_normalizer_can_yield_scan_profiles (line 21) | def test_normalizer_can_yield_scan_profiles(normalizer_runner): function test_job_handler_respects_whitelist (line 45) | def test_job_handler_respects_whitelist(normalizer_runner, mocker): FILE: boefjes/tests/plugins/test_security_txt.py function test_security_txt_same_website (line 27) | def test_security_txt_same_website(): function test_security_txt_different_website (line 46) | def test_security_txt_different_website(): FILE: boefjes/tests/plugins/test_snyk.py function test_snyk_no_findings (line 14) | def test_snyk_no_findings(): function test_snyk_findings (line 18) | def test_snyk_findings(): function test_snyk_html_parser (line 57) | def test_snyk_html_parser(mocker): FILE: boefjes/tests/plugins/test_sslcertificate_normalizer.py function test_ssl_certificates_normalizer (line 22) | def test_ssl_certificates_normalizer(): FILE: boefjes/tests/plugins/test_testssl_sh.py function test_cipherless_service (line 18) | def test_cipherless_service(): function test_ciphered_service (line 27) | def test_ciphered_service(): FILE: boefjes/tests/plugins/test_wappalyzer_normalizer.py function test_page_analyzer_normalizer (line 5) | def test_page_analyzer_normalizer(normalizer_runner): FILE: boefjes/tests/test_api.py function _mocked_scheduler_client (line 12) | def _mocked_scheduler_client(tmp_path: Path): function test_healthz (line 20) | def test_healthz(api): function test_boefje_input_running (line 26) | def test_boefje_input_running(api, tmp_path): function test_boefje_input_not_running (line 66) | def test_boefje_input_not_running(api, tmp_path): FILE: boefjes/tests/test_app.py function test_one_process (line 17) | def test_one_process(manager: SchedulerWorkerManager, item_handler: Mock... function test_two_processes (line 38) | def test_two_processes(manager: SchedulerWorkerManager, item_handler: Mo... function test_two_processes_exception (line 59) | def test_two_processes_exception(manager: SchedulerWorkerManager, item_h... function test_two_processes_with_exception_in_handler (line 74) | def test_two_processes_with_exception_in_handler( function test_two_processes_cleanup_unfinished_tasks (line 123) | def test_two_processes_cleanup_unfinished_tasks( function test_normalizer_queue (line 165) | def test_normalizer_queue(manager: SchedulerWorkerManager, item_handler:... function test_null (line 174) | def test_null(manager: SchedulerWorkerManager, tmp_path: Path, item_hand... function test_one_process_deduplication_turned_off (line 200) | def test_one_process_deduplication_turned_off(manager: SchedulerWorkerMa... function test_one_process_deduplication_of_tasks (line 231) | def test_one_process_deduplication_of_tasks(manager: SchedulerWorkerMana... function test_one_process_deduplication_exception_puts_duplicated_task_back_on_the_queue (line 285) | def test_one_process_deduplication_exception_puts_duplicated_task_back_o... function test_one_process_deduplication_duplicate_docker_boefje_as_well (line 307) | def test_one_process_deduplication_duplicate_docker_boefje_as_well( function test_create_manager (line 332) | def test_create_manager(): FILE: boefjes/tests/test_job_handler.py function test_boefje_systems_vars (line 4) | def test_boefje_systems_vars(monkeypatch): function test_boefje_system_vars_no_vars (line 14) | def test_boefje_system_vars_no_vars(): function test_boefje_systems_vars_no_allowed_keys (line 22) | def test_boefje_systems_vars_no_allowed_keys(monkeypatch): FILE: boefjes/tests/test_models.py function test_run_on (line 5) | def test_run_on(): FILE: boefjes/tests/test_nikto_normalizer.py class NiktoNormalizerTest (line 10) | class NiktoNormalizerTest(TestCase): method test_outdated_and_legacy_missing_header (line 11) | def test_outdated_and_legacy_missing_header(self): method test_unmapped_id_yields_generic_finding (line 50) | def test_unmapped_id_yields_generic_finding(self): method test_nikto_2_6_full_coverage (line 64) | def test_nikto_2_6_full_coverage(self): FILE: boefjes/tests/test_tasks.py function test_parse_normalizer_meta_to_json (line 42) | def test_parse_normalizer_meta_to_json(): function test_handle_boefje_with_exception (line 52) | def test_handle_boefje_with_exception(mocker): function test_exception_raised_unsupported_return_type_normalizer (line 95) | def test_exception_raised_unsupported_return_type_normalizer(mock_normal... function test_exception_raised_invalid_return_value (line 104) | def test_exception_raised_invalid_return_value(mock_normalizer_runner): function test_cleared_boefje_env (line 113) | def test_cleared_boefje_env(mock_boefje_handler) -> None: function test_correct_local_runner_hash (line 125) | def test_correct_local_runner_hash(mock_local_repository) -> None: FILE: boefjes/tools/run_boefje.py function run_boefje (line 34) | def run_boefje(start_pdb, organization_code, boefje_id, input_ooi): FILE: boefjes/tools/run_normalizer.py function run_normalizer (line 27) | def run_normalizer(start_pdb, normalizer_id, raw_id): FILE: boefjes/tools/show_raw.py function show_raw (line 21) | def show_raw(print_json, raw_id): FILE: boefjes/tools/upgrade_v1_17_0.py function upgrade (line 38) | def upgrade(organisation_repository: OrganisationStorage, valid_time: da... function migrate_organisation (line 75) | def migrate_organisation( function collect_boefjes_per_normalizer (line 162) | def collect_boefjes_per_normalizer() -> dict[str, list[Boefje]]: function main (line 186) | def main(): FILE: bytes/bytes/api/metrics.py function ignore_arguments_key (line 26) | def ignore_arguments_key(meta_repository: MetaDataRepository) -> str: function cached_counts_per_organization (line 31) | def cached_counts_per_organization(meta_repository: MetaDataRepository) ... function get_registry (line 40) | def get_registry(meta_repository: MetaDataRepository) -> CollectorRegistry: FILE: bytes/bytes/api/models.py class RawResponse (line 6) | class RawResponse(BaseModel): class File (line 12) | class File(BaseModel): class StatusEnum (line 18) | class StatusEnum(str, Enum): class BoefjeOutput (line 23) | class BoefjeOutput(BaseModel): FILE: bytes/bytes/api/root.py class ServiceHealth (line 22) | class ServiceHealth(BaseModel): function validation_exception_handler (line 33) | def validation_exception_handler(_: Request, exc: RequestValidationError... function root (line 39) | def root() -> RedirectResponse: function health (line 44) | def health() -> ServiceHealth: function metrics (line 50) | def metrics(meta_repository: MetaDataRepository = Depends(create_meta_da... function login (line 58) | def login(form_data: OAuth2PasswordRequestForm = Depends()) -> TokenResp... FILE: bytes/bytes/api/router.py function create_boefje_meta (line 29) | def create_boefje_meta( function get_boefje_meta_by_id (line 45) | def get_boefje_meta_by_id( function get_boefje_meta (line 60) | def get_boefje_meta( function create_normalizer_meta (line 93) | def create_normalizer_meta( function get_normalizer_meta_by_id (line 109) | def get_normalizer_meta_by_id( function get_normalizer_metas (line 119) | def get_normalizer_metas( function get_normalizer_meta (line 130) | def get_normalizer_meta( function create_raw (line 164) | async def create_raw( function get_raw_by_id (line 219) | def get_raw_by_id(raw_id: UUID, meta_repository: MetaDataRepository = De... function get_raw_meta_by_id (line 229) | def get_raw_meta_by_id( function get_raw (line 241) | def get_raw( function get_raws (line 267) | def get_raws( function get_raw_count_per_mime_type (line 305) | def get_raw_count_per_mime_type( function ignore_arguments_key (line 326) | def ignore_arguments_key(meta_repository: MetaDataRepository, query_filt... function cached_counts_per_mime_type (line 335) | def cached_counts_per_mime_type(meta_repository: MetaDataRepository, que... FILE: bytes/bytes/auth.py class TokenResponse (line 21) | class TokenResponse(BaseModel): function get_access_token (line 27) | def get_access_token(form_data: OAuth2PasswordRequestForm) -> tuple[str,... function authenticate_token (line 44) | def authenticate_token(token: str = Depends(oauth2_scheme)) -> str: function _create_access_token (line 64) | def _create_access_token( function _get_expire_time (line 75) | def _get_expire_time(access_token_expire_minutes: float) -> datetime: FILE: bytes/bytes/config.py class BackwardsCompatibleEnvSettings (line 19) | class BackwardsCompatibleEnvSettings(EnvSettingsSource): method __call__ (line 35) | def __call__(self) -> dict[str, Any]: class Settings (line 59) | class Settings(BaseSettings): method settings_customise_sources (line 152) | def settings_customise_sources( function get_settings (line 165) | def get_settings() -> Settings: function has_rfc3161_provider (line 169) | def has_rfc3161_provider() -> bool: FILE: bytes/bytes/database/db.py function get_engine (line 14) | def get_engine(db_uri: str, pool_size: int) -> Engine: FILE: bytes/bytes/database/db_models.py class BoefjeMetaInDB (line 8) | class BoefjeMetaInDB(SQL_BASE): class SigningProviderInDB (line 27) | class SigningProviderInDB(SQL_BASE): class RawFileInDB (line 35) | class RawFileInDB(SQL_BASE): class NormalizerMetaInDB (line 54) | class NormalizerMetaInDB(SQL_BASE): FILE: bytes/bytes/database/migrations/env.py function run_migrations_offline (line 27) | def run_migrations_offline() -> None: function run_migrations_online (line 48) | def run_migrations_online() -> None: FILE: bytes/bytes/database/migrations/versions/0001_initial.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 57) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0002_drop_output_add_input.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 44) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0003_rename_module_to_normalizer_boefje.py function upgrade (line 18) | def upgrade() -> None: function downgrade (line 28) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0004_rename_boefje_name_to_boefje_id.py function upgrade (line 18) | def upgrade() -> None: function downgrade (line 24) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0005_add_secure_hash_link_boefje_meta.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 28) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0006_remove_redundant_dispatches_field.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 26) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0007_add_raw_file_models.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 37) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0008_point_normalizer_to_raw_file.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 29) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0009_max_length_on_varchar_s.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 69) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0010_longer_retrieval_link_string.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 31) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0011_longer_normalizer_name_and_boefje_id.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 38) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/0011_rename_normalizer_name_to_normalizer_id.py function upgrade (line 18) | def upgrade() -> None: function downgrade (line 24) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/09a2929108d9_add_signing_provider_model.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 34) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/1dde0213e9fe_remove_all_hash_mime_types.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 43) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/65a39ab3e224_increase_organization_and_input_ooi_size.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 38) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/d216ad75177d_add_environment_and_runnable_hash_.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 26) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/e09d8780e34b_nullable_input_ooi.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 25) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/e2f76e95f1e7_.py function upgrade (line 16) | def upgrade() -> None: function downgrade (line 20) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/ebc7de8be4e3_increase_organization_id_length.py function upgrade (line 19) | def upgrade() -> None: function downgrade (line 31) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/ec68d3eb14b1_remove_redundant_boefje_meta_foreign.py function upgrade (line 20) | def upgrade() -> None: function downgrade (line 38) | def downgrade() -> None: FILE: bytes/bytes/database/migrations/versions/fa64454868a9_add_index_on_boefjemeta_table_.py function upgrade (line 18) | def upgrade() -> None: function downgrade (line 26) | def downgrade() -> None: FILE: bytes/bytes/database/sql_meta_repository.py class SQLMetaDataRepository (line 23) | class SQLMetaDataRepository(MetaDataRepository): method __init__ (line 24) | def __init__( method __enter__ (line 32) | def __enter__(self) -> None: method __exit__ (line 35) | def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_t... method save_boefje_meta (line 44) | def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method get_boefje_meta_by_id (line 50) | def get_boefje_meta_by_id(self, boefje_meta_id: uuid.UUID) -> BoefjeMeta: method get_boefje_meta (line 58) | def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[Boef... method save_normalizer_meta (line 74) | def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: method get_normalizer_meta_by_id (line 80) | def get_normalizer_meta_by_id(self, normalizer_meta_id: uuid.UUID) -> ... method get_normalizer_metas (line 88) | def get_normalizer_metas( method get_normalizer_meta (line 105) | def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> l... method save_raw (line 131) | def save_raw(self, raw: RawData) -> uuid.UUID: method get_raw (line 153) | def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]: method get_raws (line 160) | def get_raws(self, query_filter: RawDataFilter) -> list[tuple[uuid.UUI... method get_raw_by_id (line 169) | def get_raw_by_id(self, raw_id: uuid.UUID) -> RawData: method get_raw_meta_by_id (line 178) | def get_raw_meta_by_id(self, raw_id: uuid.UUID) -> RawDataMeta: method has_raw (line 186) | def has_raw(self, boefje_meta: BoefjeMeta, mime_types: list[MimeType])... method get_raw_file_count_per_organization (line 196) | def get_raw_file_count_per_organization(self) -> dict[str, int]: method get_raw_file_count_per_mime_type (line 205) | def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter... method _to_raw (line 214) | def _to_raw(self, raw_file_in_db: RawFileInDB) -> RawData: method _get_or_create_signing_provider (line 220) | def _get_or_create_signing_provider(self, signing_provider_url: str | ... function create_meta_data_repository (line 234) | def create_meta_data_repository() -> Iterator[MetaDataRepository]: class ObjectNotFoundException (line 257) | class ObjectNotFoundException(Exception): method __init__ (line 258) | def __init__(self, cls: type[SQL_BASE], **kwargs: str): class MetaIntegrityError (line 262) | class MetaIntegrityError(Exception): function to_boefje_meta_in_db (line 266) | def to_boefje_meta_in_db(boefje_meta: BoefjeMeta) -> BoefjeMetaInDB: function to_boefje_meta (line 281) | def to_boefje_meta(boefje_meta_in_db: BoefjeMetaInDB) -> BoefjeMeta: function to_normalizer_meta_in_db (line 295) | def to_normalizer_meta_in_db(normalizer_meta: NormalizerMeta) -> Normali... function to_normalizer_meta (line 306) | def to_normalizer_meta(normalizer_meta_in_db: NormalizerMetaInDB) -> Nor... function to_raw_file_in_db (line 318) | def to_raw_file_in_db(raw_data: RawData, signing_provider: SigningProvid... function raw_meta_to_raw_file_in_db (line 329) | def raw_meta_to_raw_file_in_db(raw_data_meta: RawDataMeta, signing_provi... function to_raw_data (line 340) | def to_raw_data(raw_file_in_db: RawFileInDB, raw: bytes) -> RawData: function to_raw_meta (line 351) | def to_raw_meta(raw_file_in_db: RawFileInDB) -> RawDataMeta: function to_mime_type (line 362) | def to_mime_type(mime_type: str) -> MimeType: FILE: bytes/bytes/events/events.py function utc_now (line 8) | def utc_now() -> datetime: class Event (line 12) | class Event(BaseModel): class RawFileReceived (line 19) | class RawFileReceived(Event): FILE: bytes/bytes/events/manager.py class EventManager (line 4) | class EventManager: method publish (line 5) | async def publish(self, event: Event) -> None: FILE: bytes/bytes/models.py class EncryptionMiddleware (line 15) | class EncryptionMiddleware(str, Enum): class HashingAlgorithm (line 20) | class HashingAlgorithm(str, Enum): class HashingRepositoryReference (line 25) | class HashingRepositoryReference(str, Enum): function _validate_timezone_aware_datetime (line 31) | def _validate_timezone_aware_datetime(value: datetime) -> datetime: class MimeType (line 38) | class MimeType(BaseModel): method __hash__ (line 41) | def __hash__(self) -> int: method __lt__ (line 44) | def __lt__(self, other: MimeType) -> bool: class Job (line 48) | class Job(BaseModel): method __hash__ (line 53) | def __hash__(self) -> int: class Boefje (line 57) | class Boefje(BaseModel): class Normalizer (line 62) | class Normalizer(BaseModel): class BoefjeMeta (line 67) | class BoefjeMeta(Job): class RawDataMeta (line 76) | class RawDataMeta(BaseModel): class RawData (line 89) | class RawData(BaseModel): class NormalizerMeta (line 100) | class NormalizerMeta(Job): FILE: bytes/bytes/rabbitmq.py class RabbitMQEventManager (line 13) | class RabbitMQEventManager(EventManager): method __init__ (line 14) | def __init__(self, queue_uri: str): method _get_channel (line 19) | async def _get_channel(self) -> aio_pika.abc.AbstractChannel: method publish (line 30) | async def publish(self, event: Event) -> None: method _queue_name (line 42) | def _queue_name(event: Event) -> str: class NullManager (line 46) | class NullManager(EventManager): method publish (line 47) | async def publish(self, event: Event) -> None: function create_event_manager (line 51) | def create_event_manager() -> EventManager: FILE: bytes/bytes/raw/file_raw_repository.py function create_raw_repository (line 24) | def create_raw_repository(settings: Settings) -> RawRepository: class FileRawRepository (line 41) | class FileRawRepository(RawRepository): method __init__ (line 44) | def __init__( method save_raw (line 57) | def save_raw(self, raw_id: UUID, raw: RawData) -> None: method get_raw (line 69) | def get_raw(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> RawData: method get_raws (line 78) | def get_raws(self, raw_metas_pairs: list[tuple[UUID, BoefjeMeta]]) -> ... method _raw_file_path (line 92) | def _raw_file_path(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> Path: method _index (line 95) | def _index(self, raw_id: UUID) -> str: class S3RawRepository (line 99) | class S3RawRepository(RawRepository): method __init__ (line 100) | def __init__( method get_or_create_bucket (line 111) | def get_or_create_bucket(self, organization: str) -> Bucket: method save_raw (line 123) | def save_raw(self, raw_id: UUID, raw: RawData) -> None: method get_raw (line 131) | def get_raw(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> RawData: method _raw_file_name (line 145) | def _raw_file_name(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> str: FILE: bytes/bytes/raw/middleware.py class FileMiddleware (line 9) | class FileMiddleware: method encode (line 10) | def encode(self, contents: bytes) -> bytes: method decode (line 13) | def decode(self, contents: bytes) -> bytes: function make_middleware (line 17) | def make_middleware() -> FileMiddleware: class IdentityMiddleware (line 28) | class IdentityMiddleware(FileMiddleware): method encode (line 29) | def encode(self, contents: bytes) -> bytes: method decode (line 32) | def decode(self, contents: bytes) -> bytes: class NaclBoxMiddleware (line 36) | class NaclBoxMiddleware(FileMiddleware): method __init__ (line 37) | def __init__(self, kat_private: str, vws_public: str): method encode (line 42) | def encode(self, contents: bytes) -> bytes: method decode (line 45) | def decode(self, contents: bytes) -> bytes: FILE: bytes/bytes/repositories/hash_repository.py class HashRepository (line 4) | class HashRepository: method store (line 7) | def store(self, secure_hash: SecureHash) -> RetrievalLink: method verify (line 12) | def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: method get_signing_provider_url (line 17) | def get_signing_provider_url(self) -> str | None: FILE: bytes/bytes/repositories/meta_repository.py class BoefjeMetaFilter (line 10) | class BoefjeMetaFilter(BaseModel): class NormalizerMetaFilter (line 20) | class NormalizerMetaFilter(BaseModel): class RawDataFilter (line 29) | class RawDataFilter(BaseModel): method apply (line 38) | def apply(self, query: Query) -> Query: class MetaDataRepository (line 63) | class MetaDataRepository: method __enter__ (line 64) | def __enter__(self) -> None: method __exit__ (line 67) | def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_t... method save_boefje_meta (line 70) | def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method get_boefje_meta_by_id (line 73) | def get_boefje_meta_by_id(self, boefje_meta_id: UUID) -> BoefjeMeta: method get_boefje_meta (line 76) | def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[Boef... method save_normalizer_meta (line 79) | def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: method get_normalizer_meta_by_id (line 82) | def get_normalizer_meta_by_id(self, normalizer_meta_id: UUID) -> Norma... method get_normalizer_meta (line 85) | def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> l... method get_normalizer_metas (line 88) | def get_normalizer_metas( method save_raw (line 93) | def save_raw(self, raw: RawData) -> UUID: method get_raw_by_id (line 96) | def get_raw_by_id(self, raw_id: UUID) -> RawData: method get_raw (line 99) | def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]: method get_raws (line 102) | def get_raws(self, query_filter: RawDataFilter) -> list[tuple[UUID, Ra... method has_raw (line 105) | def has_raw(self, boefje_meta: BoefjeMeta, mime_types: list[MimeType])... method get_raw_file_count_per_organization (line 108) | def get_raw_file_count_per_organization(self) -> dict[str, int]: method get_raw_file_count_per_mime_type (line 111) | def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter... method get_raw_meta_by_id (line 114) | def get_raw_meta_by_id(self, raw_id: UUID) -> RawDataMeta: FILE: bytes/bytes/repositories/raw_repository.py class BytesFileNotFoundException (line 6) | class BytesFileNotFoundException(FileNotFoundError): class RawRepository (line 10) | class RawRepository: method save_raw (line 11) | def save_raw(self, raw_id: UUID, raw: RawData) -> None: method get_raw (line 14) | def get_raw(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> RawData: method get_raws (line 17) | def get_raws(self, raw_metas_pairs: list[tuple[UUID, BoefjeMeta]]) -> ... FILE: bytes/bytes/timestamping/hashing.py function hash_data (line 12) | def hash_data( function _get_hasher (line 25) | def _get_hasher(hash_algo: HashingAlgorithm) -> Any: FILE: bytes/bytes/timestamping/in_memory.py class InMemoryHashRepository (line 7) | class InMemoryHashRepository(HashRepository): method __init__ (line 8) | def __init__(self, signing_provider_url: str | None = None) -> None: method store (line 12) | def store(self, secure_hash: SecureHash) -> RetrievalLink: method retrieve (line 17) | def retrieve(self, link: RetrievalLink) -> SecureHash: method verify (line 23) | def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: method get_signing_provider_url (line 26) | def get_signing_provider_url(self) -> str | None: FILE: bytes/bytes/timestamping/pastebin.py class PastebinHashRepository (line 7) | class PastebinHashRepository(HashRepository): method __init__ (line 8) | def __init__(self, api_dev_key: str): method store (line 13) | def store(self, secure_hash: SecureHash) -> RetrievalLink: method retrieve (line 34) | def retrieve(self, link: RetrievalLink) -> SecureHash: method verify (line 50) | def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: method get_signing_provider_url (line 53) | def get_signing_provider_url(self) -> str | None: FILE: bytes/bytes/timestamping/provider.py function create_hash_repository (line 9) | def create_hash_repository(settings: Settings) -> HashRepository: FILE: bytes/bytes/timestamping/rfc3161.py function _patched_check_timestamp (line 15) | def _patched_check_timestamp( class RFC3161HashRepository (line 73) | class RFC3161HashRepository(HashRepository): method __init__ (line 76) | def __init__(self, certificate: bytes, signing_provider: str): method store (line 80) | def store(self, secure_hash: SecureHash) -> RetrievalLink: method verify (line 86) | def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: method get_signing_provider_url (line 98) | def get_signing_provider_url(self) -> str | None: FILE: bytes/sql_migrations/0001_initial.sql type boefje_meta (line 8) | CREATE TABLE boefje_meta ( type normalizer_meta (line 25) | CREATE TABLE normalizer_meta ( type output_ooi (line 42) | CREATE TABLE output_ooi ( FILE: bytes/sql_migrations/0007_add_raw_file_models.sql type raw_file (line 1) | CREATE TABLE raw_file ( FILE: bytes/sql_migrations/0015_fa64454868a9_add_indices.sql type ix_boefje_meta_organization_boefje_id (line 1) | CREATE INDEX CONCURRENTLY ix_boefje_meta_organization_boefje_id ON boefj... type ix_normalizer_meta_raw_file_id (line 2) | CREATE INDEX CONCURRENTLY ix_normalizer_meta_raw_file_id ON normalizer_m... type ix_raw_file_boefje_meta_id (line 3) | CREATE INDEX CONCURRENTLY ix_raw_file_boefje_meta_id ON raw_file (boefje... FILE: bytes/sql_migrations/0017_09a2929108d9_add_signing_provider_model.sql type signing_provider (line 1) | CREATE TABLE signing_provider ( type ix_raw_file_signing_provider_id (line 10) | CREATE INDEX ix_raw_file_signing_provider_id ON raw_file (signing_provid... FILE: bytes/tests/client.py function retry_with_login (line 20) | def retry_with_login(function: ClientSessionMethod) -> ClientSessionMethod: class BytesAPIClient (line 35) | class BytesAPIClient: method __init__ (line 36) | def __init__(self, base_url: str, username: str, password: str): method login (line 42) | def login(self) -> None: method _verify_response (line 46) | def _verify_response(response: httpx.Response) -> None: method _get_authentication_headers (line 49) | def _get_authentication_headers(self) -> dict[str, str]: method _get_token (line 52) | def _get_token(self) -> str: method get_metrics (line 60) | def get_metrics(self) -> bytes: method get_mime_type_count (line 68) | def get_mime_type_count(self, query_filter: RawDataFilter) -> dict[str... method save_boefje_meta (line 78) | def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method get_boefje_meta_by_id (line 84) | def get_boefje_meta_by_id(self, boefje_meta_id: UUID) -> BoefjeMeta: method get_boefje_meta (line 92) | def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[Boef... method save_normalizer_meta (line 100) | def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: method get_normalizer_meta_by_id (line 106) | def get_normalizer_meta_by_id(self, normalizer_meta_id: UUID) -> Norma... method get_normalizer_meta (line 114) | def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> l... method save_raw (line 122) | def save_raw(self, boefje_meta_id: UUID, raw: bytes, mime_types: list[... method save_raws (line 137) | def save_raws(self, boefje_meta_id: UUID, boefje_output: BoefjeOutput)... method get_raw (line 146) | def get_raw(self, raw_id: UUID) -> bytes: method get_raw_meta (line 153) | def get_raw_meta(self, raw_id: UUID) -> RawDataMeta: method get_raw_metas (line 160) | def get_raw_metas(self, query_filter: RawDataFilter) -> dict[str, str]: method get_raws (line 170) | def get_raws(self, query_filter: RawDataFilter) -> list[File]: FILE: bytes/tests/conftest.py function settings (line 25) | def settings(tmpdir): function test_client (line 44) | def test_client(settings: Settings) -> TestClient: function nacl_middleware (line 51) | def nacl_middleware(settings: Settings) -> NaclBoxMiddleware: function pastebin_hash_repository (line 56) | def pastebin_hash_repository(settings: Settings) -> HashRepository: function mock_hash_repository (line 61) | def mock_hash_repository(settings: Settings) -> HashRepository: function meta_repository (line 69) | def meta_repository( function bytes_api_client (line 88) | def bytes_api_client(settings) -> Iterator[BytesAPIClient]: function raw_repository (line 103) | def raw_repository(tmp_path: Path) -> FileRawRepository: function event_manager (line 108) | async def event_manager(settings: Settings) -> AsyncIterator[RabbitMQEve... FILE: bytes/tests/integration/test_bytes_api.py function test_login (line 17) | def test_login(bytes_api_client: BytesAPIClient) -> None: function test_metrics (line 23) | def test_metrics(bytes_api_client: BytesAPIClient) -> None: function test_get_mime_type_count (line 74) | def test_get_mime_type_count(bytes_api_client: BytesAPIClient) -> None: function test_boefje_meta (line 93) | def test_boefje_meta(bytes_api_client: BytesAPIClient) -> None: function test_filtered_boefje_meta (line 109) | def test_filtered_boefje_meta(bytes_api_client: BytesAPIClient) -> None: function test_normalizer_meta (line 135) | async def test_normalizer_meta(bytes_api_client: BytesAPIClient, event_m... function test_filtered_normalizer_meta (line 156) | def test_filtered_normalizer_meta(bytes_api_client: BytesAPIClient) -> N... function test_normalizer_meta_pointing_to_raw_id (line 202) | def test_normalizer_meta_pointing_to_raw_id(bytes_api_client: BytesAPICl... function test_raw (line 221) | async def test_raw(bytes_api_client: BytesAPIClient, event_manager: Rabb... function test_raw_big (line 243) | async def test_raw_big(bytes_api_client: BytesAPIClient, event_manager: ... function test_save_raw_with_one_mime_type (line 264) | def test_save_raw_with_one_mime_type(bytes_api_client: BytesAPIClient) -... function test_save_raw_no_mime_types (line 284) | def test_save_raw_no_mime_types(bytes_api_client: BytesAPIClient) -> None: function test_get_many_actual_raw_files (line 310) | def test_get_many_actual_raw_files(bytes_api_client: BytesAPIClient) -> ... function test_raw_mimes (line 354) | def test_raw_mimes(bytes_api_client: BytesAPIClient) -> None: function test_cannot_overwrite_raw (line 413) | def test_cannot_overwrite_raw(bytes_api_client: BytesAPIClient) -> None: function test_save_multiple_raw_files (line 426) | def test_save_multiple_raw_files(bytes_api_client: BytesAPIClient) -> None: FILE: bytes/tests/integration/test_event.py function test_event_published_successfully (line 12) | async def test_event_published_successfully(event_manager: RabbitMQEvent... FILE: bytes/tests/integration/test_hash_service.py function test_save_raw_data_pastebin (line 11) | def test_save_raw_data_pastebin( FILE: bytes/tests/integration/test_meta_repository.py function test_save_boefje_meta (line 13) | def test_save_boefje_meta(meta_repository: SQLMetaDataRepository) -> None: function test_data_error_is_raised_when_boefje_id_is_too_long (line 66) | def test_data_error_is_raised_when_boefje_id_is_too_long(meta_repository... function test_data_error_is_raised_when_organization_id_is_too_long (line 81) | def test_data_error_is_raised_when_organization_id_is_too_long(meta_repo... function test_save_raw (line 96) | def test_save_raw(meta_repository: SQLMetaDataRepository) -> None: function test_filter_raw_on_organization (line 151) | def test_filter_raw_on_organization(meta_repository: SQLMetaDataReposito... function test_filter_raw_not_on_organization (line 198) | def test_filter_raw_not_on_organization(meta_repository: SQLMetaDataRepo... function test_filter_normalizer_meta (line 226) | def test_filter_normalizer_meta(meta_repository: SQLMetaDataRepository) ... function test_save_normalizer_meta (line 284) | def test_save_normalizer_meta(meta_repository: SQLMetaDataRepository) ->... function test_normalizer_id_length (line 306) | def test_normalizer_id_length(meta_repository: SQLMetaDataRepository) ->... function test_normalizer_meta_pointing_to_raw_id (line 326) | def test_normalizer_meta_pointing_to_raw_id(meta_repository: SQLMetaData... FILE: bytes/tests/integration/test_migrations.py function test_clean_mime_types (line 8) | def test_clean_mime_types(meta_repository: SQLMetaDataRepository) -> None: FILE: bytes/tests/integration/test_timestamper.py function test_rfc3161_external_api (line 8) | def test_rfc3161_external_api(meta_repository: SQLMetaDataRepository, mo... FILE: bytes/tests/loading.py function load_stub (line 11) | def load_stub(relative_path: str) -> dict[str, Any]: function load_stub_raw (line 17) | def load_stub_raw(relative_path: str) -> bytes: function get_boefje_meta (line 23) | def get_boefje_meta( function get_normalizer_meta (line 39) | def get_normalizer_meta(raw_file_id: UUID = UUID("2c9f47db-dfca-4928-b29... function get_raw_data (line 49) | def get_raw_data() -> RawData: function get_raw_data_meta (line 57) | def get_raw_data_meta(raw_file_id: UUID = UUID("2c9f47db-dfca-4928-b29f-... FILE: bytes/tests/seed_database.py function seed (line 8) | def seed(): FILE: bytes/tests/unit/test_api.py function test_healthcheck (line 4) | def test_healthcheck(test_client) -> None: FILE: bytes/tests/unit/test_auth.py function test_login_get_token (line 9) | def test_login_get_token(test_client: TestClient) -> None: function test_login_get_token_not_authorized (line 22) | def test_login_get_token_not_authorized(test_client: TestClient) -> None: FILE: bytes/tests/unit/test_context_mapping.py function test_context_mapping_boefje (line 15) | def test_context_mapping_boefje() -> None: function test_context_mapping_normalizer (line 33) | def test_context_mapping_normalizer() -> None: function test_context_mapping_raw (line 54) | def test_context_mapping_raw() -> None: FILE: bytes/tests/unit/test_hash.py class HashTests (line 10) | class HashTests(TestCase): method test_hash_same_data (line 11) | def test_hash_same_data(self) -> None: method test_hash_sha224 (line 30) | def test_hash_sha224(self) -> None: FILE: bytes/tests/unit/test_raw_repository.py function has_encryption_keys (line 11) | def has_encryption_keys() -> bool: function test_save_raw (line 17) | def test_save_raw(raw_repository: FileRawRepository) -> None: function test_nacl_middleware (line 27) | def test_nacl_middleware(nacl_middleware: NaclBoxMiddleware) -> None: FILE: cveapi/cveapi.py function download_files (line 15) | def download_files(directory: pathlib.Path, last_update: datetime | None... function run (line 65) | def run() -> None: FILE: mula/scheduler/app.py class App (line 13) | class App: method __init__ (line 27) | def __init__(self, ctx: context.AppContext) -> None: method run (line 51) | def run(self) -> None: method start_schedulers (line 78) | def start_schedulers(self) -> None: method start_server (line 91) | def start_server( method start_collectors (line 104) | def start_collectors(self) -> None: method shutdown (line 109) | def shutdown(self) -> None: method _stop_threads (line 126) | def _stop_threads(self) -> None: method _unhandled_exception (line 140) | def _unhandled_exception(self, args: threading.ExceptHookArgs) -> None: method _collect_metrics (line 147) | def _collect_metrics(self) -> None: FILE: mula/scheduler/clients/amqp/listeners.py class Listener (line 13) | class Listener(Connector): method __init__ (line 25) | def __init__(self) -> None: method listen (line 29) | def listen(self) -> None: method stop (line 32) | def stop(self) -> None: method log_future_exceptions (line 35) | def log_future_exceptions(self, fut: futures.Future): class RabbitMQ (line 41) | class RabbitMQ(Listener): method __init__ (line 78) | def __init__(self, dsn: str, queue: str, func: Callable, durable: bool... method listen (line 110) | def listen(self) -> None: method connect (line 114) | def connect(self, queue: str, durable: bool, prefetch_count: int) -> N... method basic_consume (line 149) | def basic_consume(self, queue: str, durable: bool, prefetch_count: int... method callback (line 172) | def callback( method dispatch (line 190) | def dispatch(self, channel: pika.channel.Channel, delivery_tag: int, b... method ack_message (line 207) | def ack_message(self, channel, delivery_tag): method stop (line 214) | def stop(self) -> None: method _close_callback (line 237) | def _close_callback(self): FILE: mula/scheduler/clients/amqp/raw_data.py class RawData (line 4) | class RawData(RabbitMQ): FILE: mula/scheduler/clients/amqp/scan_profile.py class ScanProfileMutation (line 4) | class ScanProfileMutation(RabbitMQ): FILE: mula/scheduler/clients/connector.py class Connector (line 10) | class Connector: method __init__ (line 13) | def __init__(self): method is_host_available (line 16) | def is_host_available(self, hostname: str, port: int) -> bool: method is_host_healthy (line 32) | def is_host_healthy(self, host: str, health_endpoint: str) -> bool: method retry (line 51) | def retry(self, func: Callable, *args: Any, **kwargs: Any) -> bool: FILE: mula/scheduler/clients/errors.py class ExternalServiceError (line 7) | class ExternalServiceError(Exception): class ExternalServiceConnectionError (line 11) | class ExternalServiceConnectionError(ExternalServiceError): class ExternalServiceResponseError (line 15) | class ExternalServiceResponseError(ExternalServiceError): method __init__ (line 16) | def __init__(self, message: str, response: httpx.Response): class ExternalServiceValidationError (line 21) | class ExternalServiceValidationError(ExternalServiceError): function exception_handler (line 25) | def exception_handler(func): FILE: mula/scheduler/clients/http/client.py class HTTPClient (line 9) | class HTTPClient: method __init__ (line 12) | def __init__(self): method is_host_available (line 15) | def is_host_available(self, hostname: str, port: int) -> bool: method is_host_healthy (line 31) | def is_host_healthy(self, host: str, health_endpoint: str) -> bool: method retry (line 50) | def retry(self, func: Callable, *args, **kwargs) -> bool: FILE: mula/scheduler/clients/http/external/bytes.py function retry_with_login (line 16) | def retry_with_login(function: ClientSessionMethod) -> ClientSessionMethod: class Bytes (line 33) | class Bytes(HTTPService): method __init__ (line 38) | def __init__(self, host: str, source: str, user: str, password: str, t... method login (line 54) | def login(self) -> None: method _verify_response (line 59) | def _verify_response(response: httpx.Response) -> None: method get_token (line 62) | def get_token(self) -> str: method get_last_run_boefje (line 72) | def get_last_run_boefje(self, boefje_id: str, input_ooi: str, organiza... method get_last_run_boefje_by_organisation_id (line 96) | def get_last_run_boefje_by_organisation_id(self, organization_id: str)... FILE: mula/scheduler/clients/http/external/katalogus.py class Katalogus (line 10) | class Katalogus(HTTPService): method __init__ (line 15) | def __init__(self, host: str, source: str, timeout: int, pool_connecti... method get_boefjes (line 24) | def get_boefjes(self) -> list[Boefje]: method get_boefje (line 35) | def get_boefje(self, boefje_id: str) -> Boefje | None: method get_organisation (line 46) | def get_organisation(self, organisation_id) -> Organisation | None: method get_organisations (line 57) | def get_organisations(self) -> list[Organisation]: method get_plugins_by_organisation (line 68) | def get_plugins_by_organisation(self, organisation_id: str) -> list[Pl... method get_plugin_by_id_and_org_id (line 79) | def get_plugin_by_id_and_org_id(self, plugin_id: str, organisation_id:... method get_boefjes_by_type_and_org_id (line 91) | def get_boefjes_by_type_and_org_id(self, ooi_type: str, organisation_i... method get_normalizers_by_org_id_and_type (line 103) | def get_normalizers_by_org_id_and_type(self, organisation_id: str, ooi... method get_new_boefjes_by_org_id (line 113) | def get_new_boefjes_by_org_id(self, organisation_id: str) -> list[Plug... method get_configs (line 142) | def get_configs( FILE: mula/scheduler/clients/http/external/octopoes.py class ListObjectsResponse (line 12) | class ListObjectsResponse(BaseModel): class Octopoes (line 17) | class Octopoes(HTTPService): method __init__ (line 23) | def __init__(self, host: str, source: str, orgs: list[Organisation], p... method get_objects_by_object_types (line 28) | def get_objects_by_object_types( method get_random_objects (line 65) | def get_random_objects(self, organisation_id: str, n: int, scan_level:... method get_objects (line 83) | def get_objects(self, organisation_id: str, references: list[str]) -> ... method get_object (line 92) | def get_object(self, organisation_id: str, reference: str) -> OOI | None: method get_object_clients (line 105) | def get_object_clients(self, reference: str, clients: set[str], valid_... method is_healthy (line 120) | def is_healthy(self) -> bool: FILE: mula/scheduler/clients/http/external/rocky.py class Rocky (line 4) | class Rocky(HTTPService): FILE: mula/scheduler/clients/http/service.py class HTTPService (line 13) | class HTTPService(Connector): method __init__ (line 43) | def __init__(self, host: str, source: str, timeout: int = 10, pool_con... method get (line 78) | def get(self, url: str, params: dict[str, Any] | None = None) -> httpx... method post (line 99) | def post(self, url: str, payload: dict[str, Any], params: dict[str, An... method _request_with_backoff (line 120) | def _request_with_backoff(self, method: str, url: str, **kwargs: Any) ... method headers (line 137) | def headers(self) -> MutableMapping[str, str]: method _do_checks (line 140) | def _do_checks(self) -> None: method is_healthy (line 165) | def is_healthy(self) -> bool: FILE: mula/scheduler/config/settings.py class BackwardsCompatibleEnvSettings (line 16) | class BackwardsCompatibleEnvSettings(PydanticBaseSettingsSource): method get_field_value (line 19) | def get_field_value(self, field: fields.FieldInfo, field_name: str) ->... method __call__ (line 22) | def __call__(self) -> dict[str, Any]: class Settings (line 42) | class Settings(BaseSettings): method settings_customise_sources (line 169) | def settings_customise_sources( FILE: mula/scheduler/context/context.py class AppContext (line 16) | class AppContext: method __init__ (line 40) | def __init__(self) -> None: FILE: mula/scheduler/models/base.py class Base (line 4) | class Base(DeclarativeBase): FILE: mula/scheduler/models/boefje.py class Boefje (line 8) | class Boefje(BaseModel): class BoefjeMeta (line 17) | class BoefjeMeta(BaseModel): class BoefjeConfig (line 30) | class BoefjeConfig(BaseModel): FILE: mula/scheduler/models/errors.py class ValidationError (line 1) | class ValidationError(Exception): FILE: mula/scheduler/models/events.py class RawDataReceivedEvent (line 8) | class RawDataReceivedEvent(BaseModel): FILE: mula/scheduler/models/health.py class ServiceHealth (line 6) | class ServiceHealth(BaseModel): FILE: mula/scheduler/models/normalizer.py class Normalizer (line 7) | class Normalizer(BaseModel): class NormalizerMeta (line 15) | class NormalizerMeta(BaseModel): FILE: mula/scheduler/models/ooi.py class MutationOperationType (line 6) | class MutationOperationType(Enum): class RunOn (line 12) | class RunOn(Enum): class ScanProfile (line 17) | class ScanProfile(BaseModel): class OOI (line 23) | class OOI(BaseModel): class ScanProfileMutation (line 31) | class ScanProfileMutation(BaseModel): FILE: mula/scheduler/models/organisation.py class Organisation (line 4) | class Organisation(BaseModel): FILE: mula/scheduler/models/plugin.py class Plugin (line 8) | class Plugin(BaseModel): FILE: mula/scheduler/models/queue.py class Queue (line 6) | class Queue(BaseModel): FILE: mula/scheduler/models/raw_data.py class RawData (line 8) | class RawData(BaseModel): FILE: mula/scheduler/models/schedule.py class Schedule (line 16) | class Schedule(BaseModel): method model_post_init (line 31) | def model_post_init(self, context) -> None: method validate_schedule (line 38) | def validate_schedule(cls, value: str) -> str: class ScheduleDB (line 50) | class ScheduleDB(Base): FILE: mula/scheduler/models/scheduler.py class SchedulerType (line 8) | class SchedulerType(str, enum.Enum): class Scheduler (line 17) | class Scheduler(BaseModel): FILE: mula/scheduler/models/task.py class TaskStatus (line 22) | class TaskStatus(str, enum.Enum): class Task (line 49) | class Task(BaseModel): class TaskDB (line 66) | class TaskDB(Base): class NormalizerTask (line 99) | class NormalizerTask(BaseModel): method hash (line 109) | def hash(self) -> str: class BoefjeTask (line 118) | class BoefjeTask(BaseModel): method hash (line 132) | def hash(self) -> str: class ReportTask (line 142) | class ReportTask(BaseModel): method hash (line 149) | def hash(self) -> str: FILE: mula/scheduler/schedulers/errors.py function exception_handler (line 7) | def exception_handler(func): FILE: mula/scheduler/schedulers/queue/errors.py class QueueEmptyError (line 4) | class QueueEmptyError(Exception): class NotAllowedError (line 8) | class NotAllowedError(Exception): class InvalidItemError (line 12) | class InvalidItemError(ValueError): class QueueFullError (line 16) | class QueueFullError(Full): class ItemNotFoundError (line 20) | class ItemNotFoundError(Exception): FILE: mula/scheduler/schedulers/queue/pq.py function with_lock (line 18) | def with_lock(method): class PriorityQueue (line 27) | class PriorityQueue(abc.ABC): method __init__ (line 58) | def __init__( method pop (line 103) | def pop(self, limit: int | None = None, filters: storage.filters.Filte... method push (line 122) | def push(self, task: models.Task) -> models.Task: method peek (line 222) | def peek(self, index: int) -> models.Task | None: method remove (line 234) | def remove(self, task: models.Task) -> None: method clear (line 246) | def clear(self) -> None: method empty (line 251) | def empty(self) -> bool: method qsize (line 256) | def qsize(self) -> int: method full (line 261) | def full(self) -> bool: method is_item_on_queue (line 269) | def is_item_on_queue(self, task: models.Task) -> bool: method is_item_on_queue_by_hash (line 286) | def is_item_on_queue_by_hash(self, item_hash: str) -> bool: method get_item_by_identifier (line 299) | def get_item_by_identifier(self, task: models.Task) -> models.Task | N... method _is_valid_item (line 312) | def _is_valid_item(self, item: Any) -> bool: method dict (line 328) | def dict(self, include_pq: bool = True) -> dict[str, Any]: method create_hash (line 345) | def create_hash(self, task: models.Task) -> str: FILE: mula/scheduler/schedulers/rankers/boefje.py class BoefjeRanker (line 7) | class BoefjeRanker(Ranker): method rank (line 15) | def rank(self, obj: Any) -> int: class BoefjeRankerTimeBased (line 53) | class BoefjeRankerTimeBased(Ranker): method rank (line 60) | def rank(self, obj: Any) -> int: FILE: mula/scheduler/schedulers/rankers/normalizer.py class NormalizerRanker (line 6) | class NormalizerRanker(Ranker): method rank (line 11) | def rank(self, obj: Any) -> int: FILE: mula/scheduler/schedulers/rankers/ranker.py class Ranker (line 9) | class Ranker(abc.ABC): method __init__ (line 26) | def __init__(self, ctx: context.AppContext) -> None: method rank (line 31) | def rank(self, obj: Any) -> int: FILE: mula/scheduler/schedulers/scheduler.py class Scheduler (line 21) | class Scheduler(abc.ABC): method __init__ (line 59) | def __init__( method run (line 95) | def run(self) -> None: method log_future_exceptions (line 98) | def log_future_exceptions(self, fut: futures.Future): method run_in_thread (line 103) | def run_in_thread( method push_items_to_queue (line 122) | def push_items_to_queue(self, items: list[models.Task]) -> None: method push_item_to_queue_with_timeout (line 156) | def push_item_to_queue_with_timeout( method push_item_to_queue (line 186) | def push_item_to_queue(self, item: models.Task, create_schedule: bool ... method post_push (line 248) | def post_push(self, item: models.Task, create_schedule: bool = True) -... method pop_item_from_queue (line 329) | def pop_item_from_queue( method post_pop (line 358) | def post_pop(self, items: list[models.Task]) -> None: method calculate_deadline (line 365) | def calculate_deadline(self, schedule: models.Schedule) -> models.Sche... method calculate_default_deadline (line 381) | def calculate_default_deadline(self, schedule: models.Schedule) -> dat... method stop (line 398) | def stop(self) -> None: method stop_listeners (line 409) | def stop_listeners(self) -> None: method stop_threads (line 416) | def stop_threads(self) -> None: method is_space_on_queue (line 423) | def is_space_on_queue(self) -> bool: method is_item_on_queue_by_hash (line 436) | def is_item_on_queue_by_hash(self, item_hash: str) -> bool: method last_activity (line 440) | def last_activity(self) -> datetime | None: method last_activity (line 446) | def last_activity(self, value: datetime) -> None: method dict (line 451) | def dict(self) -> dict[str, Any]: FILE: mula/scheduler/schedulers/schedulers/boefje.py class BoefjePQ (line 25) | class BoefjePQ(queue.PriorityQueue): method pop (line 33) | def pop(self, limit: int | None = None, filters: filters.FilterRequest... class BoefjeScheduler (line 43) | class BoefjeScheduler(Scheduler): method __init__ (line 54) | def __init__(self, ctx: context.AppContext): method run (line 71) | def run(self) -> None: method process_mutations (line 104) | def process_mutations(self, body: bytes) -> None: method process_new_boefjes (line 205) | def process_new_boefjes(self) -> None: method process_rescheduling (line 270) | def process_rescheduling(self): method push_boefje_task (line 440) | def push_boefje_task(self, boefje_task: models.BoefjeTask, create_sche... method push_item_to_queue (line 547) | def push_item_to_queue(self, item: models.Task, create_schedule: bool ... method has_boefje_permission_to_run (line 568) | def has_boefje_permission_to_run(self, boefje: models.Plugin, ooi: mod... method has_boefje_task_started_running (line 633) | def has_boefje_task_started_running( method has_boefje_task_stalled (line 682) | def has_boefje_task_stalled(self, task_db: models.Task | None, task: m... method has_boefje_task_grace_period_passed (line 704) | def has_boefje_task_grace_period_passed( method get_oois_for_boefje (line 752) | def get_oois_for_boefje(self, boefje: models.Plugin, organisation: str... method is_boefje_in_other_orgs (line 762) | def is_boefje_in_other_orgs(self, boefje_task: models.BoefjeTask) -> l... method calculate_deadline (line 861) | def calculate_deadline(self, schedule: models.Schedule) -> models.Sche... FILE: mula/scheduler/schedulers/schedulers/normalizer.py class NormalizerScheduler (line 17) | class NormalizerScheduler(Scheduler): method __init__ (line 28) | def __init__(self, ctx: context.AppContext): method run (line 38) | def run(self) -> None: method process_raw_data (line 62) | def process_raw_data(self, body: bytes) -> None: method push_normalizer_task (line 166) | def push_normalizer_task( method push_item_to_queue (line 204) | def push_item_to_queue(self, item: models.Task, create_schedule: bool ... method has_normalizer_permission_to_run (line 225) | def has_normalizer_permission_to_run(self, normalizer: models.Plugin) ... method has_normalizer_task_started_running (line 242) | def has_normalizer_task_started_running( method has_raw_data_deschedule (line 265) | def has_raw_data_deschedule(self, raw_data: models.RawData) -> bool: method has_raw_data_errors (line 276) | def has_raw_data_errors(self, raw_data: models.RawData) -> bool: FILE: mula/scheduler/schedulers/schedulers/report.py class ReportScheduler (line 15) | class ReportScheduler(Scheduler): method __init__ (line 22) | def __init__(self, ctx: context.AppContext): method run (line 31) | def run(self) -> None: method process_rescheduling (line 43) | def process_rescheduling(self): method push_report_task (line 72) | def push_report_task( FILE: mula/scheduler/server/errors.py class FilterError (line 8) | class FilterError(storage.filters.errors.FilterError): class ValidationError (line 12) | class ValidationError(Exception): class StorageError (line 16) | class StorageError(storage.errors.StorageError): class NotFoundError (line 20) | class NotFoundError(Exception): class ConflictError (line 24) | class ConflictError(Exception): class BadRequestError (line 28) | class BadRequestError(Exception): class TooManyRequestsError (line 32) | class TooManyRequestsError(Exception): function filter_error_handler (line 36) | def filter_error_handler(request: fastapi.Request, exc: FilterError): function storage_error_handler (line 40) | def storage_error_handler(request: fastapi.Request, exc: StorageError): function validation_error_handler (line 46) | def validation_error_handler(request: fastapi.Request, exc: ValidationEr... function conflict_error_handler (line 52) | def conflict_error_handler(request: fastapi.Request, exc: ConflictError): function bad_request_error_handler (line 60) | def bad_request_error_handler(request: fastapi.Request, exc: BadRequestE... function not_found_error_handler (line 66) | def not_found_error_handler(request: fastapi.Request, exc: NotFoundError): function too_many_requests_error_handler (line 70) | def too_many_requests_error_handler(request: fastapi.Request, exc: TooMa... function http_error_handler (line 74) | def http_error_handler(request: fastapi.Request, exc: fastapi.HTTPExcept... FILE: mula/scheduler/server/handlers/health.py class HealthAPI (line 9) | class HealthAPI: method __init__ (line 10) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext) -> N... method health (line 24) | def health(self, externals: bool = False) -> schemas.ServiceHealth: FILE: mula/scheduler/server/handlers/metrics.py class MetricsAPI (line 19) | class MetricsAPI: method __init__ (line 20) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext) -> N... method metrics (line 51) | def metrics(self) -> Any: FILE: mula/scheduler/server/handlers/root.py class RootAPI (line 9) | class RootAPI: method __init__ (line 12) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext): method root (line 20) | def root(self) -> Any: FILE: mula/scheduler/server/handlers/schedulers.py class SchedulerAPI (line 11) | class SchedulerAPI: method __init__ (line 12) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext, s: d... method list (line 54) | def list(self) -> list[schemas.Scheduler]: method get (line 57) | def get(self, scheduler_id: str) -> schemas.Scheduler: method pop (line 64) | def pop( method push (line 79) | def push(self, scheduler_id: str, item: schemas.TaskPush) -> schemas.T... FILE: mula/scheduler/server/handlers/schedules.py class ScheduleAPI (line 13) | class ScheduleAPI: method __init__ (line 14) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext, s: d... method list (line 74) | def list( method create (line 109) | def create(self, schedule: schemas.ScheduleCreate) -> schemas.Schedule: method get (line 139) | def get(self, schedule_id: uuid.UUID) -> schemas.Schedule: method patch (line 146) | def patch(self, schedule_id: uuid.UUID, schedule: schemas.SchedulePatc... method search (line 169) | def search( method delete (line 202) | def delete(self, schedule_id: uuid.UUID) -> None: FILE: mula/scheduler/server/handlers/tasks.py class TaskAPI (line 13) | class TaskAPI: method __init__ (line 14) | def __init__(self, api: fastapi.FastAPI, ctx: context.AppContext) -> N... method list (line 55) | def list( method get (line 85) | def get(self, task_id: uuid.UUID) -> schemas.Task: method patch (line 91) | def patch(self, task_id: uuid.UUID, item: schemas.TaskPatch) -> schema... method stats (line 107) | def stats( FILE: mula/scheduler/server/schemas/health.py class ServiceHealth (line 6) | class ServiceHealth(BaseModel): FILE: mula/scheduler/server/schemas/schedule.py class Schedule (line 7) | class Schedule(BaseModel): class ScheduleCreate (line 21) | class ScheduleCreate(BaseModel): class SchedulePatch (line 31) | class SchedulePatch(BaseModel): FILE: mula/scheduler/server/schemas/scheduler.py class Scheduler (line 6) | class Scheduler(BaseModel): FILE: mula/scheduler/server/schemas/task.py class TaskStatus (line 8) | class TaskStatus(str, enum.Enum): class Task (line 32) | class Task(BaseModel): class TaskPatch (line 46) | class TaskPatch(BaseModel): class TaskPush (line 60) | class TaskPush(BaseModel): class TaskPop (line 70) | class TaskPop(BaseModel): FILE: mula/scheduler/server/server.py class Server (line 11) | class Server: method __init__ (line 22) | def __init__(self, ctx: context.AppContext, s: dict[str, schedulers.Sc... method run (line 54) | def run(self) -> None: FILE: mula/scheduler/server/utils/pagination.py class PaginatedResponse (line 7) | class PaginatedResponse(BaseModel): function create_next_url (line 14) | def create_next_url(request: Request, offset: int, limit: int, count: in... function create_previous_url (line 21) | def create_previous_url(request: Request, offset: int, limit: int) -> st... function paginate (line 28) | def paginate(request: Request, items: list[Any], count: int, offset: int... FILE: mula/scheduler/storage/connection.py class DBConn (line 11) | class DBConn: method __init__ (line 12) | def __init__(self, dsn: str, pool_size: int = 25): method connect (line 18) | def connect(self) -> None: FILE: mula/scheduler/storage/errors.py class StorageError (line 6) | class StorageError(Exception): class IntegrityError (line 10) | class IntegrityError(Exception): function exception_handler (line 14) | def exception_handler(func): FILE: mula/scheduler/storage/filters/casting.py function cast_expression (line 10) | def cast_expression(expression: BinaryExpression, filter_: Filter) -> Bi... FILE: mula/scheduler/storage/filters/comparison.py class Comparator (line 6) | class Comparator: method __init__ (line 48) | def __init__(self, operator: str): method compare (line 60) | def compare( FILE: mula/scheduler/storage/filters/errors.py class FilterError (line 1) | class FilterError(Exception): class UnsupportedTypeError (line 5) | class UnsupportedTypeError(FilterError): class MismatchedTypeError (line 9) | class MismatchedTypeError(FilterError): class ArgumentError (line 13) | class ArgumentError(FilterError): FILE: mula/scheduler/storage/filters/filters.py class Filter (line 7) | class Filter(BaseModel): class FilterRequest (line 67) | class FilterRequest(BaseModel): method __init__ (line 77) | def __init__(self, *args, **kwargs): FILE: mula/scheduler/storage/filters/functions.py function apply_filter (line 13) | def apply_filter(entity: DeclarativeBase, query: Query, filter_request: ... function is_relationship_property (line 114) | def is_relationship_property(attr) -> bool: FILE: mula/scheduler/storage/migrations/env.py function run_migrations_offline (line 28) | def run_migrations_offline(): function run_migrations_online (line 51) | def run_migrations_online(): FILE: mula/scheduler/storage/migrations/versions/0001_initial_migration.py function upgrade (line 19) | def upgrade(): function downgrade (line 44) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0002_update_tasks.py function upgrade (line 19) | def upgrade(): function downgrade (line 43) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0003_add_type_field_to_tasks.py function upgrade (line 19) | def upgrade(): function downgrade (line 26) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0004_add_server_default.py function upgrade (line 20) | def upgrade(): function downgrade (line 53) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0005_size_limit_hash.py function upgrade (line 19) | def upgrade(): function downgrade (line 25) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0006_add_jsonb_fields_add_jsonb_fields.py function upgrade (line 20) | def upgrade(): function downgrade (line 41) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0007_add_cancelled_status_for_tasks.py function upgrade (line 18) | def upgrade(): function downgrade (line 24) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0008_add_task_schedule.py function upgrade (line 22) | def upgrade(): function downgrade (line 87) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0009_add_organisation.py function upgrade (line 19) | def upgrade(): function downgrade (line 44) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0010_add_indices.py function upgrade (line 19) | def upgrade(): function downgrade (line 31) | def downgrade(): FILE: mula/scheduler/storage/migrations/versions/0011_add_more_indexes.py function upgrade (line 19) | def upgrade(): function downgrade (line 39) | def downgrade(): FILE: mula/scheduler/storage/stores/pq.py class PriorityQueueStore (line 13) | class PriorityQueueStore: method __init__ (line 16) | def __init__(self, dbconn: DBConn) -> None: method build_pop_query (line 19) | def build_pop_query(self, session, scheduler_id: str | None = None, fi... method _pop_with_session (line 30) | def _pop_with_session( method pop (line 46) | def pop( method pop_boefje (line 52) | def pop_boefje( method push (line 94) | def push(self, item: models.Task) -> models.Task | None: method peek (line 103) | def peek(self, scheduler_id: str, index: int) -> models.Task | None: method update (line 122) | def update(self, scheduler_id: str, item: models.Task) -> None: method remove (line 134) | def remove(self, scheduler_id: str, item_id: UUID) -> None: method get (line 146) | def get(self, scheduler_id, item_id: UUID) -> models.Task | None: method empty (line 163) | def empty(self, scheduler_id: str) -> bool: method qsize (line 175) | def qsize(self, scheduler_id: str) -> int: method get_items (line 188) | def get_items(self, scheduler_id: str, filters: FilterRequest | None) ... method get_item_by_hash (line 206) | def get_item_by_hash(self, scheduler_id: str, item_hash: str) -> model... method get_items_by_scheduler_id (line 224) | def get_items_by_scheduler_id(self, scheduler_id: str) -> list[models.... method get_active_task_by_schedule (line 237) | def get_active_task_by_schedule(self, schedule_id: str) -> models.Task... method clear (line 253) | def clear(self, scheduler_id: str) -> None: method bulk_update_status (line 264) | def bulk_update_status(self, scheduler_id: str, item_ids: list[UUID], ... FILE: mula/scheduler/storage/stores/schedule.py class ScheduleStore (line 13) | class ScheduleStore: method __init__ (line 16) | def __init__(self, dbconn: DBConn) -> None: method get_schedules (line 21) | def get_schedules( method get_schedule (line 77) | def get_schedule(self, schedule_id: str) -> models.Schedule | None: method get_due_schedules (line 88) | def get_due_schedules( method get_schedule_by_hash (line 125) | def get_schedule_by_hash(self, schedule_hash: str) -> models.Schedule ... method create_schedule (line 138) | def create_schedule(self, schedule: models.Schedule) -> models.Schedule: method update_schedule (line 149) | def update_schedule(self, schedule: models.Schedule) -> None: method delete_schedule (line 159) | def delete_schedule(self, schedule_id: str) -> None: FILE: mula/scheduler/storage/stores/task.py class TaskStore (line 12) | class TaskStore: method __init__ (line 15) | def __init__(self, dbconn: DBConn) -> None: method get_tasks (line 20) | def get_tasks( method get_task (line 68) | def get_task(self, task_id: str) -> models.Task | None: method get_tasks_by_hash (line 80) | def get_tasks_by_hash(self, task_hash: str, limit: int | None = None) ... method get_latest_task_by_hash (line 98) | def get_latest_task_by_hash(self, task_hash: str) -> models.Task | None: method create_task (line 116) | def create_task(self, task: models.Task) -> models.Task | None: method update_task (line 127) | def update_task(self, task: models.Task) -> None: method cancel_tasks (line 135) | def cancel_tasks(self, scheduler_id: str, task_ids: list[str]) -> None: method get_status_count_per_hour (line 143) | def get_status_count_per_hour( method get_status_counts (line 179) | def get_status_counts( FILE: mula/scheduler/storage/utils.py function retry (line 12) | def retry(max_retries: int = 3, retry_delay: float = 5.0): FILE: mula/scheduler/utils/cron.py function next_run (line 6) | def next_run(expression: str, start_time: datetime | None = None) -> dat... FILE: mula/scheduler/utils/datastore.py class GUID (line 7) | class GUID(TypeDecorator): method load_dialect_impl (line 21) | def load_dialect_impl(self, dialect): method process_bind_param (line 27) | def process_bind_param(self, value, dialect): method process_result_value (line 39) | def process_result_value(self, value, dialect): FILE: mula/scheduler/utils/dict_utils.py function deep_get (line 7) | def deep_get(d: Any | None, keys: list[str]) -> Any: class ExpiredError (line 13) | class ExpiredError(Exception): class ExpiringDict (line 17) | class ExpiringDict: method __init__ (line 23) | def __init__(self, lifetime: int = 300, start_time: datetime = datetim... method get (line 31) | def get(self, key: str, default: Any | None = None) -> Any: method is_empty (line 37) | def is_empty(self) -> bool: method reset (line 41) | def reset(self) -> None: method expiration_enabled (line 47) | def expiration_enabled(self) -> bool: method expiration_enabled (line 52) | def expiration_enabled(self, value: bool) -> None: method _is_expired (line 66) | def _is_expired(self) -> bool: method __getitem__ (line 69) | def __getitem__(self, key: str) -> Any: method __setitem__ (line 83) | def __setitem__(self, key: str, value: Any) -> None: method __delitem__ (line 87) | def __delitem__(self, key: str) -> None: method __contains__ (line 91) | def __contains__(self, key: str) -> bool: method __len__ (line 95) | def __len__(self) -> int: method __iter__ (line 99) | def __iter__(self) -> Iterator[str]: method setdefault (line 103) | def setdefault(self, key: str, default: Any) -> Any: FILE: mula/scheduler/utils/errors.py class ValidationError (line 6) | class ValidationError(Exception): function validation_handler (line 10) | def validation_handler(func): FILE: mula/scheduler/utils/functions.py function remove_trailing_slash (line 1) | def remove_trailing_slash(url: str) -> str: FILE: mula/scheduler/utils/thread.py class ThreadRunner (line 8) | class ThreadRunner(threading.Thread): method __init__ (line 29) | def __init__( method run_forever (line 63) | def run_forever(self) -> None: method run_once (line 78) | def run_once(self) -> None: method run (line 91) | def run(self) -> None: method join (line 100) | def join(self, timeout: float | None = None) -> None: method stop (line 108) | def stop(self) -> None: FILE: mula/scripts/benchmark.py function are_tasks_done (line 19) | def are_tasks_done() -> bool: function parse_stats (line 33) | def parse_stats() -> None: function capture_logs (line 52) | def capture_logs(container_id: str, output_file: str) -> None: function parse_logs (line 58) | def parse_logs(path: str) -> None: function collect_cpu (line 71) | def collect_cpu(container_id: str) -> str: function collect_memory (line 83) | def collect_memory(container_id: str) -> str: function run (line 96) | def run(container_id: str) -> None: FILE: mula/scripts/load.py function create_organisations (line 23) | def create_organisations(org_num: int = 1) -> list[dict[str, Any]]: function create_oois (line 58) | def create_oois(orgs: list[dict[str, Any]], ooi_num: int = 10) -> None: function enable_boefjes (line 125) | def enable_boefjes(orgs: list[dict[str, Any]], boefjes_str: str = "dns-r... function run (line 147) | def run(org_num: int = 1, ooi_num: int = 10, boefjes_str: str = "dns-rec... FILE: mula/tests/factories/boefje.py class BoefjeFactory (line 8) | class BoefjeFactory(Factory): class Meta (line 9) | class Meta: class BoefjeMetaFactory (line 17) | class BoefjeMetaFactory(Factory): class Meta (line 18) | class Meta: FILE: mula/tests/factories/normalizer.py class NormalizerFactory (line 5) | class NormalizerFactory(Factory): class Meta (line 6) | class Meta: FILE: mula/tests/factories/ooi.py class ScanProfileFactory (line 5) | class ScanProfileFactory(Factory): class Meta (line 6) | class Meta: class OOIFactory (line 16) | class OOIFactory(Factory): class Meta (line 17) | class Meta: FILE: mula/tests/factories/organisation.py class OrganisationFactory (line 5) | class OrganisationFactory(Factory): class Meta (line 6) | class Meta: FILE: mula/tests/factories/plugin.py class PluginFactory (line 6) | class PluginFactory(Factory): class Meta (line 7) | class Meta: FILE: mula/tests/factories/raw_data.py class RawDataFactory (line 5) | class RawDataFactory(Factory): class Meta (line 6) | class Meta: FILE: mula/tests/integration/test_api.py class APITemplateTestCase (line 22) | class APITemplateTestCase(unittest.TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 62) | def tearDown(self): class APISchedulerEndpointTestCase (line 68) | class APISchedulerEndpointTestCase(APITemplateTestCase): method test_get_schedulers (line 69) | def test_get_schedulers(self): method test_get_scheduler (line 73) | def test_get_scheduler(self): method test_get_scheduler_malformed_id (line 78) | def test_get_scheduler_malformed_id(self): method test_push_queue (line 82) | def test_push_queue(self): method test_push_queue_malformed_item (line 103) | def test_push_queue_malformed_item(self): method test_push_incorrect_item_type (line 111) | def test_push_incorrect_item_type(self): method test_push_queue_full (line 118) | def test_push_queue_full(self): method test_push_queue_full_high_priority (line 134) | def test_push_queue_full_high_priority(self): method test_push_replace_not_allowed (line 150) | def test_push_replace_not_allowed(self): method test_push_replace_allowed (line 173) | def test_push_replace_allowed(self): method test_push_updates_not_allowed (line 196) | def test_push_updates_not_allowed(self): method test_push_updates_allowed (line 223) | def test_push_updates_allowed(self): method test_push_priority_updates_not_allowed (line 251) | def test_push_priority_updates_not_allowed(self): method test_update_priority_higher (line 277) | def test_update_priority_higher(self): method test_update_priority_lower (line 307) | def test_update_priority_lower(self): method test_pop_queue (line 339) | def test_pop_queue(self): method test_pop_queue_multiple (line 357) | def test_pop_queue_multiple(self): method test_pop_queue_multiple_pagination (line 386) | def test_pop_queue_multiple_pagination(self): method test_pop_queue_not_found (line 418) | def test_pop_queue_not_found(self): method test_pop_queue_filters_two_items (line 423) | def test_pop_queue_filters_two_items(self): method test_pop_queue_filters_one_item (line 455) | def test_pop_queue_filters_one_item(self): method test_pop_queue_filters_nested (line 490) | def test_pop_queue_filters_nested(self): method test_pop_queue_filters_nested_contained_by (line 542) | def test_pop_queue_filters_nested_contained_by(self): method test_pop_empty (line 574) | def test_pop_empty(self): class APITasksEndpointTestCase (line 581) | class APITasksEndpointTestCase(APITemplateTestCase): method setUp (line 582) | def setUp(self): method test_create_task (line 607) | def test_create_task(self): method test_get_tasks (line 626) | def test_get_tasks(self): method test_get_task (line 632) | def test_get_task(self): method test_get_task_malformed_id (line 645) | def test_get_task_malformed_id(self): method test_get_task_not_found (line 650) | def test_get_task_not_found(self): method test_get_tasks_min_and_max_created_at (line 656) | def test_get_tasks_min_and_max_created_at(self): method test_get_tasks_min_created_at (line 676) | def test_get_tasks_min_created_at(self): method test_get_tasks_max_created_at (line 690) | def test_get_tasks_max_created_at(self): method test_get_tasks_min_greater_than_max_created_at (line 704) | def test_get_tasks_min_greater_than_max_created_at(self): method test_get_tasks_min_created_at_future (line 716) | def test_get_tasks_min_created_at_future(self): method test_get_normalizer_filtered (line 723) | def test_get_normalizer_filtered(self): method test_get_tasks_filtered (line 730) | def test_get_tasks_filtered(self): method test_get_tasks_by_schedule (line 750) | def test_get_tasks_by_schedule(self): method test_patch_task (line 784) | def test_patch_task(self): method test_patch_task_empty (line 791) | def test_patch_task_empty(self): method test_patch_task_invalid_content (line 797) | def test_patch_task_invalid_content(self): method test_patch_task_not_found (line 803) | def test_patch_task_not_found(self): method test_patch_task_malformed_id (line 810) | def test_patch_task_malformed_id(self): method test_patch_task_invalid_status (line 816) | def test_patch_task_invalid_status(self): method test_get_tasks_stats (line 822) | def test_get_tasks_stats(self): class APIScheduleEndpointTestCase (line 833) | class APIScheduleEndpointTestCase(APITemplateTestCase): method setUp (line 834) | def setUp(self): method test_list_schedules (line 859) | def test_list_schedules(self): method test_list_schedules_scheduler_id (line 865) | def test_list_schedules_scheduler_id(self): method test_list_schedules_enabled (line 876) | def test_list_schedules_enabled(self): method test_list_schedules_min_deadline (line 887) | def test_list_schedules_min_deadline(self): method test_list_schedules_max_deadline (line 899) | def test_list_schedules_max_deadline(self): method test_list_schedules_min_and_max_deadline (line 911) | def test_list_schedules_min_and_max_deadline(self): method test_list_schedules_min_greater_than_max_deadline (line 928) | def test_list_schedules_min_greater_than_max_deadline(self): method test_list_schedules_hash (line 937) | def test_list_schedules_hash(self): method test_list_schedules_min_created_at (line 944) | def test_list_schedules_min_created_at(self): method test_list_schedules_max_created_at (line 956) | def test_list_schedules_max_created_at(self): method test_list_schedules_min_and_max_created_at (line 968) | def test_list_schedules_min_and_max_created_at(self): method test_list_schedules_organisation (line 984) | def test_list_schedules_organisation(self): method test_post_schedule (line 995) | def test_post_schedule(self): method test_post_schedule_explicit_deadline_at (line 1018) | def test_post_schedule_explicit_deadline_at(self): method test_post_schedule_schedule_and_deadline_at_none (line 1040) | def test_post_schedule_schedule_and_deadline_at_none(self): method test_post_schedule_invalid_schedule (line 1052) | def test_post_schedule_invalid_schedule(self): method test_post_schedule_invalid_scheduler_id (line 1066) | def test_post_schedule_invalid_scheduler_id(self): method test_post_schedule_invalid_data (line 1080) | def test_post_schedule_invalid_data(self): method test_post_schedule_invalid_data_type (line 1093) | def test_post_schedule_invalid_data_type(self): method test_post_schedule_hash_already_exists (line 1107) | def test_post_schedule_hash_already_exists(self): method test_get_schedule (line 1132) | def test_get_schedule(self): method test_patch_schedule (line 1137) | def test_patch_schedule(self): method test_patch_schedule_validate_schedule (line 1142) | def test_patch_schedule_validate_schedule(self): method test_patch_schedule_validate_malformed_schedule (line 1147) | def test_patch_schedule_validate_malformed_schedule(self): method test_search_schedule (line 1152) | def test_search_schedule(self): method test_search_schedule_with_pagination (line 1165) | def test_search_schedule_with_pagination(self): method test_delete_schedule (line 1174) | def test_delete_schedule(self): method test_delete_schedule_task_schedule_id (line 1182) | def test_delete_schedule_task_schedule_id(self): FILE: mula/tests/integration/test_app.py class AppTestCase (line 14) | class AppTestCase(unittest.TestCase): method setUp (line 15) | def setUp(self): method tearDown (line 38) | def tearDown(self): method test_shutdown (line 43) | def test_shutdown(self): FILE: mula/tests/integration/test_boefje_scheduler.py class BoefjeSchedulerBaseTestCase (line 25) | class BoefjeSchedulerBaseTestCase(unittest.TestCase): method setUp (line 26) | def setUp(self): method tearDown (line 67) | def tearDown(self): class BoefjeSchedulerTestCase (line 73) | class BoefjeSchedulerTestCase(BoefjeSchedulerBaseTestCase): method setUp (line 74) | def setUp(self): method tearDown (line 97) | def tearDown(self): method test_run (line 100) | def test_run(self): method test_is_allowed_to_run (line 115) | def test_is_allowed_to_run(self): method test_is_allowed_to_run_no_ooi (line 127) | def test_is_allowed_to_run_no_ooi(self): method test_is_not_allowed_to_run (line 139) | def test_is_not_allowed_to_run(self): method test_is_task_not_running (line 153) | def test_is_task_not_running(self): method test_has_boefje_task_started_running_datastore_running (line 173) | def test_has_boefje_task_started_running_datastore_running(self): method test_has_boefje_task_started_running_datastore_not_running (line 197) | def test_has_boefje_task_started_running_datastore_not_running(self): method test_has_boefje_task_started_running_datastore_exception (line 245) | def test_has_boefje_task_started_running_datastore_exception(self): method test_has_boefje_task_started_running_bytes_running (line 260) | def test_has_boefje_task_started_running_bytes_running(self): method test_has_boefje_task_started_running_bytes_not_running (line 280) | def test_has_boefje_task_started_running_bytes_not_running(self): method test_has_boefje_task_started_running_stalled_before_grace_period (line 300) | def test_has_boefje_task_started_running_stalled_before_grace_period(s... method test_has_boefje_task_started_running_stalled_after_grace_period (line 328) | def test_has_boefje_task_started_running_stalled_after_grace_period(se... method test_has_boefje_task_started_running_mismatch_before_grace_period (line 356) | def test_has_boefje_task_started_running_mismatch_before_grace_period(... method test_has_boefje_task_started_running_mismatch_after_grace_period (line 388) | def test_has_boefje_task_started_running_mismatch_after_grace_period(s... method test_has_boefje_task_grace_period_passed_datastore_passed (line 421) | def test_has_boefje_task_grace_period_passed_datastore_passed(self): method test_has_boefje_task_grace_period_passed_datastore_not_passed (line 453) | def test_has_boefje_task_grace_period_passed_datastore_not_passed(self): method test_has_boefje_task_grace_period_passed_bytes_passed (line 485) | def test_has_boefje_task_grace_period_passed_bytes_passed(self): method test_has_boefje_task_grace_period_passed_bytes_not_passed (line 521) | def test_has_boefje_task_grace_period_passed_bytes_not_passed(self): method test_push_boefje_task (line 553) | def test_push_boefje_task(self): method test_push_boefje_task_no_ooi (line 577) | def test_push_boefje_task_no_ooi(self): method test_push_boefje_task_queue_full (line 602) | def test_push_boefje_task_queue_full( method test_push_boefje_task_stalled (line 651) | def test_push_boefje_task_stalled( method test_push_boefje_task_boefje_in_other_orgs (line 728) | def test_push_boefje_task_boefje_in_other_orgs(self): method test_push_boefje_task_boefje_in_other_orgs_one_org (line 812) | def test_push_boefje_task_boefje_in_other_orgs_one_org(self): method test_push_boefje_task_boefje_in_other_orgs_no_configs (line 860) | def test_push_boefje_task_boefje_in_other_orgs_no_configs(self): method test_push_boefje_task_boefje_in_other_orgs_no_ooi (line 907) | def test_push_boefje_task_boefje_in_other_orgs_no_ooi(self): method test_post_push (line 965) | def test_post_push(self): method test_post_push_boefje_cron (line 1013) | def test_post_push_boefje_cron(self): method test_post_push_boefje_interval (line 1070) | def test_post_push_boefje_interval(self): method test_pop (line 1121) | def test_pop(self): method test_pop_deduplication (line 1154) | def test_pop_deduplication(self): method test_pop_deduplication_different_deduplication_key (line 1195) | def test_pop_deduplication_different_deduplication_key(self): method test_post_pop (line 1258) | def test_post_pop(self): method test_has_boefje_permission_to_run (line 1304) | def test_has_boefje_permission_to_run(self): method test_has_boefje_permission_to_run_boefje_disabled (line 1316) | def test_has_boefje_permission_to_run_boefje_disabled(self): method test_has_boefje_permission_to_run_scan_profile_is_none (line 1328) | def test_has_boefje_permission_to_run_scan_profile_is_none(self): method test_has_boefje_permission_to_run_ooi_scan_level_is_none (line 1341) | def test_has_boefje_permission_to_run_ooi_scan_level_is_none(self): method test_has_boefje_permission_to_run_boefje_scan_level_is_none (line 1354) | def test_has_boefje_permission_to_run_boefje_scan_level_is_none(self): class ScanProfileMutationTestCase (line 1367) | class ScanProfileMutationTestCase(BoefjeSchedulerBaseTestCase): method setUp (line 1368) | def setUp(self): method tearDown (line 1395) | def tearDown(self): method test_process_mutations__ (line 1398) | def test_process_mutations__(self): method test_process_mutations_value_empty (line 1425) | def test_process_mutations_value_empty(self): method test_process_mutations_no_boefjes_found (line 1438) | def test_process_mutations_no_boefjes_found(self): method test_process_mutations_not_allowed_to_run (line 1456) | def test_process_mutations_not_allowed_to_run(self): method test_process_mutations_still_running (line 1476) | def test_process_mutations_still_running(self): method test_process_mutations_item_on_queue (line 1496) | def test_process_mutations_item_on_queue(self): method test_process_mutations_delete (line 1528) | def test_process_mutations_delete(self): method test_process_mutations_delete_on_queue (line 1551) | def test_process_mutations_delete_on_queue(self): method test_process_mutations_op_create_run_on_create (line 1600) | def test_process_mutations_op_create_run_on_create(self): method test_process_mutations_op_create_run_on_create_update (line 1640) | def test_process_mutations_op_create_run_on_create_update(self): method test_process_mutations_op_create_run_on_update (line 1680) | def test_process_mutations_op_create_run_on_update(self): method test_process_mutations_op_create_run_on_none (line 1707) | def test_process_mutations_op_create_run_on_none(self): method test_process_mutations_op_update_run_on_create (line 1750) | def test_process_mutations_op_update_run_on_create(self): method test_process_mutations_op_update_run_on_create_update (line 1778) | def test_process_mutations_op_update_run_on_create_update(self): method test_process_mutations_op_update_run_on_update (line 1819) | def test_process_mutations_op_update_run_on_update(self): method test_process_mutations_op_update_run_on_none (line 1860) | def test_process_mutations_op_update_run_on_none(self): class NewBoefjesTestCase (line 1902) | class NewBoefjesTestCase(BoefjeSchedulerBaseTestCase): method setUp (line 1903) | def setUp(self): method tearDown (line 1934) | def tearDown(self): method test_process_new_boefjes (line 1937) | def test_process_new_boefjes(self): method test_process_new_boefjes_request_exception (line 1963) | def test_process_new_boefjes_request_exception(self): method test_process_new_boefjes_no_new_boefjes (line 1983) | def test_process_new_boefjes_no_new_boefjes(self): method test_process_new_boefjes_empty_consumes (line 1998) | def test_process_new_boefjes_empty_consumes(self): method test_process_new_boefjes_empty_consumes_no_ooi (line 2014) | def test_process_new_boefjes_empty_consumes_no_ooi(self): method test_process_new_boefjes_no_oois_found (line 2028) | def test_process_new_boefjes_no_oois_found(self): method test_process_new_boefjes_get_objects_request_exception (line 2044) | def test_process_new_boefjes_get_objects_request_exception(self): method test_process_new_boefjes_not_allowed_to_run (line 2064) | def test_process_new_boefjes_not_allowed_to_run(self): method test_process_new_boefjes_still_running (line 2081) | def test_process_new_boefjes_still_running(self): method test_process_new_boefjes_item_on_queue (line 2098) | def test_process_new_boefjes_item_on_queue(self): class RescheduleTestCase (line 2132) | class RescheduleTestCase(BoefjeSchedulerBaseTestCase): method setUp (line 2133) | def setUp(self): method tearDown (line 2160) | def tearDown(self): method test_process_rescheduling_scheduler_id (line 2163) | def test_process_rescheduling_scheduler_id(self): method test_process_rescheduling (line 2166) | def test_process_rescheduling(self): method test_process_rescheduling_no_ooi (line 2209) | def test_process_rescheduling_no_ooi(self): method test_process_rescheduling_ooi_not_found (line 2255) | def test_process_rescheduling_ooi_not_found(self): method test_process_rescheduling_boefje_not_found (line 2294) | def test_process_rescheduling_boefje_not_found(self): method test_process_rescheduling_boefje_disabled (line 2333) | def test_process_rescheduling_boefje_disabled(self): method test_process_rescheduling_boefje_doesnt_consume_ooi (line 2372) | def test_process_rescheduling_boefje_doesnt_consume_ooi(self): method test_process_rescheduling_boefje_cannot_scan_ooi (line 2411) | def test_process_rescheduling_boefje_cannot_scan_ooi(self): FILE: mula/tests/integration/test_clients.py class BytesTestCase (line 12) | class BytesTestCase(unittest.TestCase): method setUp (line 13) | def setUp(self) -> None: method test_login (line 25) | def test_login(self): method test_expired_token_refresh (line 32) | def test_expired_token_refresh(self): class KatalogusTestCase (line 44) | class KatalogusTestCase(unittest.TestCase): method setUp (line 45) | def setUp(self) -> None: method test_get_new_boefjes_by_org_id (line 58) | def test_get_new_boefjes_by_org_id(self, mock_get_plugins_by_organisat... method test_new_boefjes_cache_thread_safety (line 113) | def test_new_boefjes_cache_thread_safety(self, mock_get_plugins_by_org... FILE: mula/tests/integration/test_listeners.py class RabbitMQTestCase (line 12) | class RabbitMQTestCase(unittest.TestCase): method setUp (line 15) | def setUp(self): method tearDown (line 20) | def tearDown(self): method unhandled_exception (line 24) | def unhandled_exception(self, args: threading.ExceptHookArgs) -> None: method test_shutdown (line 29) | def test_shutdown(self): method test_shutdown_no_connection (line 60) | def test_shutdown_no_connection(self): method test_start_consuming_exception (line 94) | def test_start_consuming_exception(self, mock_start_consuming): method test_func_exception (line 127) | def test_func_exception(self): FILE: mula/tests/integration/test_normalizer_scheduler.py class NormalizerSchedulerBaseTestCase (line 23) | class NormalizerSchedulerBaseTestCase(unittest.TestCase): method setUp (line 24) | def setUp(self): method tearDown (line 49) | def tearDown(self): class NormalizerSchedulerTestCase (line 55) | class NormalizerSchedulerTestCase(NormalizerSchedulerBaseTestCase): method setUp (line 56) | def setUp(self): method test_is_allowed_to_run (line 67) | def test_is_allowed_to_run(self): method test_is_not_allowed_to_run (line 80) | def test_is_not_allowed_to_run(self): class RawFileReceivedTestCase (line 95) | class RawFileReceivedTestCase(NormalizerSchedulerBaseTestCase): method setUp (line 96) | def setUp(self): method test_process_raw_data (line 115) | def test_process_raw_data(self): method test_process_raw_data_no_normalizers_found (line 144) | def test_process_raw_data_no_normalizers_found(self): method test_process_raw_data_not_allowed_to_run (line 165) | def test_process_raw_data_not_allowed_to_run(self): method test_process_raw_data_still_running (line 195) | def test_process_raw_data_still_running(self): method test_process_raw_data_still_running_exception (line 226) | def test_process_raw_data_still_running_exception(self): method test_process_raw_data_item_on_queue (line 257) | def test_process_raw_data_item_on_queue(self): method test_process_raw_data_error_mimetype (line 291) | def test_process_raw_data_error_mimetype(self): method test_process_raw_data_queue_full (line 317) | def test_process_raw_data_queue_full(self): FILE: mula/tests/integration/test_pq_store.py class PriorityQueueStoreTestCase (line 13) | class PriorityQueueStoreTestCase(unittest.TestCase): method setUp (line 14) | def setUp(self): method tearDown (line 35) | def tearDown(self): method test_push (line 39) | def test_push(self): method test_push_status_not_queued (line 52) | def test_push_status_not_queued(self): method test_pop (line 63) | def test_pop(self): method test_pop_status_not_queued (line 76) | def test_pop_status_not_queued(self): FILE: mula/tests/integration/test_report_scheduler.py class ReportSchedulerBaseTestCase (line 11) | class ReportSchedulerBaseTestCase(unittest.TestCase): method setUp (line 12) | def setUp(self): method tearDown (line 37) | def tearDown(self): class ReportSchedulerTestCase (line 43) | class ReportSchedulerTestCase(ReportSchedulerBaseTestCase): method setUp (line 44) | def setUp(self): method tearDown (line 51) | def tearDown(self): method test_process_rescheduling (line 54) | def test_process_rescheduling(self): method test_process_rescheduling_item_on_queue (line 86) | def test_process_rescheduling_item_on_queue(self): FILE: mula/tests/integration/test_schedule_store.py class ScheduleStoreTestCase (line 13) | class ScheduleStoreTestCase(unittest.TestCase): method setUp (line 14) | def setUp(self): method tearDown (line 35) | def tearDown(self): method test_create_schedule_calculate_deadline_at (line 39) | def test_create_schedule_calculate_deadline_at(self): method test_create_schedule_explicit_deadline_at (line 47) | def test_create_schedule_explicit_deadline_at(self): method test_create_schedule_deadline_at_takes_precedence (line 56) | def test_create_schedule_deadline_at_takes_precedence(self): method test_create_schedule (line 69) | def test_create_schedule(self): method test_get_schedules (line 84) | def test_get_schedules(self): method test_get_schedule (line 119) | def test_get_schedule(self): method test_get_schedule_by_hash (line 134) | def test_get_schedule_by_hash(self): method test_update_schedule (line 151) | def test_update_schedule(self): method test_delete_schedule (line 171) | def test_delete_schedule(self): method test_delete_schedule_ondelete (line 187) | def test_delete_schedule_ondelete(self): method test_relationship_schedule_tasks (line 220) | def test_relationship_schedule_tasks(self): method test_get_tasks_filter_related (line 239) | def test_get_tasks_filter_related(self): FILE: mula/tests/integration/test_scheduler.py class SchedulerTestCase (line 18) | class SchedulerTestCase(unittest.TestCase): method setUp (line 19) | def setUp(self): method tearDown (line 55) | def tearDown(self): method test_push_items_to_queue (line 60) | def test_push_items_to_queue(self): method test_push_item_to_queue (line 90) | def test_push_item_to_queue(self): method test_push_item_to_queue_create_schedule_false (line 114) | def test_push_item_to_queue_create_schedule_false(self): method test_push_item_to_queue_full (line 140) | def test_push_item_to_queue_full(self): method test_push_item_to_queue_invalid (line 159) | def test_push_item_to_queue_invalid(self): method test_pop_item_from_queue (line 170) | def test_pop_item_from_queue(self): method test_post_push (line 190) | def test_post_push(self): method test_post_push_schedule_enabled (line 225) | def test_post_push_schedule_enabled(self): method test_post_push_schedule_update_schedule (line 259) | def test_post_push_schedule_update_schedule(self): method test_post_push_schedule_is_not_none (line 289) | def test_post_push_schedule_is_not_none(self): method test_post_push_schedule_is_none (line 318) | def test_post_push_schedule_is_none(self): method test_post_push_schedule_auto_calculate_deadline (line 342) | def test_post_push_schedule_auto_calculate_deadline(self): method test_post_pop (line 369) | def test_post_pop(self): FILE: mula/tests/integration/test_task_store.py class StoreTestCase (line 13) | class StoreTestCase(unittest.TestCase): method setUp (line 14) | def setUp(self): method tearDown (line 35) | def tearDown(self): method test_create_task (line 39) | def test_create_task(self): method test_get_tasks (line 44) | def test_get_tasks(self): method get_tasks_by_type (line 57) | def get_tasks_by_type(self): method test_get_tasks_by_hash (line 72) | def test_get_tasks_by_hash(self): method test_get_task (line 92) | def test_get_task(self): method test_get_latest_task_by_hash (line 103) | def test_get_latest_task_by_hash(self): method test_update_task (line 123) | def test_update_task(self): method test_cancel_task (line 136) | def test_cancel_task(self): method test_get_status_counts (line 148) | def test_get_status_counts(self): method test_get_status_count_per_hour (line 189) | def test_get_status_count_per_hour(self): FILE: mula/tests/mocks/item.py class MockData (line 7) | class MockData(pydantic.BaseModel): method __init__ (line 15) | def __init__(self, **data: Any): method hash (line 22) | def hash(self) -> str: FILE: mula/tests/mocks/listener.py class MockListener (line 6) | class MockListener(listeners.Listener): method listen (line 7) | def listen(self) -> None: method stop (line 10) | def stop(self) -> None: class MockRabbitMQ (line 14) | class MockRabbitMQ(listeners.RabbitMQ): FILE: mula/tests/mocks/queue.py class MockPriorityQueue (line 6) | class MockPriorityQueue(PriorityQueue): method create_hash (line 7) | def create_hash(self, p_item: models.Task) -> str: FILE: mula/tests/mocks/ranker.py class MockRanker (line 6) | class MockRanker(rankers.Ranker): method rank (line 7) | def rank(self, obj: Any) -> int: FILE: mula/tests/mocks/scheduler.py class MockScheduler (line 10) | class MockScheduler(schedulers.Scheduler): method run (line 13) | def run(self) -> None: method _run (line 22) | def _run(self) -> None: FILE: mula/tests/mocks/services.py class MockKatalogusService (line 4) | class MockKatalogusService: method __init__ (line 5) | def __init__(self): method get_organisation (line 8) | def get_organisation(self, org_id: str) -> models.Organisation: method get_organisations (line 12) | def get_organisations(self) -> list[models.Organisation]: method get_new_boefjes_by_org_id (line 16) | def get_new_boefjes_by_org_id(self, org_id: str) -> list[models.Boefje]: method flush_caches (line 20) | def flush_caches(self) -> None: FILE: mula/tests/mocks/task.py class MockTask (line 7) | class MockTask(pydantic.BaseModel): method hash (line 12) | def hash(self): FILE: mula/tests/simulation/test_simulation.py class SimulationTestCase (line 20) | class SimulationTestCase(unittest.TestCase): method setUp (line 21) | def setUp(self): method create_normalizer_scheduler_for_organisation (line 29) | def create_normalizer_scheduler_for_organisation(self, organisation): method create_boefje_scheduler_for_organisation (line 47) | def create_boefje_scheduler_for_organisation(self, organisation): method test_simulation_boefje_queue (line 69) | def test_simulation_boefje_queue(self, mock_create_tasks_for_oois, moc... method test_simulation_normalizer_queue (line 101) | def test_simulation_normalizer_queue(self, mock_get_latest_raw_data, m... FILE: mula/tests/unit/test_filter.py class TestModel (line 14) | class TestModel(Base): class TestModelChild (line 26) | class TestModelChild(Base): class FilteringTestCase (line 47) | class FilteringTestCase(unittest.TestCase): method setUp (line 48) | def setUp(self): method tearDown (line 100) | def tearDown(self): method test_apply_filter_basic (line 104) | def test_apply_filter_basic(self): method test_apply_filter_nested_fields (line 123) | def test_apply_filter_nested_fields(self): method test_apply_filter_casting (line 140) | def test_apply_filter_casting(self): method test_apply_filter_empty_filter_request (line 159) | def test_apply_filter_empty_filter_request(self): method test_apply_filter_or (line 168) | def test_apply_filter_or(self): method test_apply_filter_and (line 186) | def test_apply_filter_and(self): method test_apply_filter_not (line 203) | def test_apply_filter_not(self): method test_apply_filter_numeric (line 214) | def test_apply_filter_numeric(self): method test_apply_filter_string (line 231) | def test_apply_filter_string(self): method test_apply_filter_boolean (line 249) | def test_apply_filter_boolean(self): method test_apply_filter_eq (line 268) | def test_apply_filter_eq(self): method test_apply_filter_json_eq (line 289) | def test_apply_filter_json_eq(self): method test_apply_filter_ne (line 316) | def test_apply_filter_ne(self): method test_apply_filter_json_ne (line 338) | def test_apply_filter_json_ne(self): method test_apply_filter_is (line 363) | def test_apply_filter_is(self): method test_apply_filter_is_not (line 374) | def test_apply_filter_is_not(self): method test_apply_filter_gt (line 384) | def test_apply_filter_gt(self): method test_apply_filter_json_gt (line 407) | def test_apply_filter_json_gt(self): method test_apply_filter_gte (line 428) | def test_apply_filter_gte(self): method test_apply_filter_json_gte (line 453) | def test_apply_filter_json_gte(self): method test_apply_filter_lt (line 478) | def test_apply_filter_lt(self): method test_apply_filter_json_lt (line 499) | def test_apply_filter_json_lt(self): method test_apply_filter_lte (line 520) | def test_apply_filter_lte(self): method test_apply_filter_json_lte (line 543) | def test_apply_filter_json_lte(self): method test_apply_filter_like (line 568) | def test_apply_filter_like(self): method test_apply_filter_json_like (line 579) | def test_apply_filter_json_like(self): method test_apply_filter_not_like (line 592) | def test_apply_filter_not_like(self): method test_apply_filter_json_not_like (line 604) | def test_apply_filter_json_not_like(self): method test_apply_filter_ilike (line 616) | def test_apply_filter_ilike(self): method test_apply_filter_json_ilike (line 627) | def test_apply_filter_json_ilike(self): method test_apply_filter_not_ilike (line 640) | def test_apply_filter_not_ilike(self): method test_apply_filter_json_not_ilike (line 652) | def test_apply_filter_json_not_ilike(self): method test_apply_filter_in (line 664) | def test_apply_filter_in(self): method test_apply_filter_json_in (line 676) | def test_apply_filter_json_in(self): method test_apply_filter_not_in (line 687) | def test_apply_filter_not_in(self): method test_apply_filter_json_not_in (line 700) | def test_apply_filter_json_not_in(self): method test_apply_filter_contains (line 712) | def test_apply_filter_contains(self): method test_apply_filter_json_contains (line 723) | def test_apply_filter_json_contains(self): method test_apply_filter_jsonb_contains (line 736) | def test_apply_filter_jsonb_contains(self): method test_apply_filter_jsonb_contains_list (line 747) | def test_apply_filter_jsonb_contains_list(self): method test_apply_filter_jsonb_contained_by_list (line 761) | def test_apply_filter_jsonb_contained_by_list(self): method test_apply_filter_related (line 776) | def test_apply_filter_related(self): method test_apply_filter_related_reversed (line 789) | def test_apply_filter_related_reversed(self): method test_apply_filter_related_and_nested__ (line 800) | def test_apply_filter_related_and_nested__(self): method test_apply_filter_related_and_nested_reversed (line 812) | def test_apply_filter_related_and_nested_reversed(self): FILE: mula/tests/unit/test_queue.py class PriorityQueueTestCase (line 16) | class PriorityQueueTestCase(unittest.TestCase): method setUp (line 17) | def setUp(self) -> None: method tearDown (line 35) | def tearDown(self) -> None: method _check_queue_empty (line 39) | def _check_queue_empty(self): method test_push (line 42) | def test_push(self): method test_push_incorrect_item_type (line 54) | def test_push_incorrect_item_type(self): method test_push_invalid_item (line 65) | def test_push_invalid_item(self): method test_push_replace_not_allowed (line 77) | def test_push_replace_not_allowed(self): method test_push_replace_allowed (line 96) | def test_push_replace_allowed(self): method test_push_updates_not_allowed (line 116) | def test_push_updates_not_allowed(self): method test_push_updates_allowed (line 141) | def test_push_updates_allowed(self): method test_push_priority_updates_not_allowed (line 166) | def test_push_priority_updates_not_allowed(self): method test_push_priority_updates_allowed (line 192) | def test_push_priority_updates_allowed(self): method test_remove_item (line 217) | def test_remove_item(self): method test_push_maxsize_not_allowed (line 232) | def test_push_maxsize_not_allowed(self): method test_push_maxsize_allowed (line 257) | def test_push_maxsize_allowed(self): method test_push_maxsize_allowed_high_priority (line 287) | def test_push_maxsize_allowed_high_priority(self): method test_push_maxsize_not_allowed_low_priority (line 317) | def test_push_maxsize_not_allowed_low_priority(self): method test_pop (line 342) | def test_pop(self): method test_pop_with_lock (line 360) | def test_pop_with_lock(self): method test_pop_without_lock (line 416) | def test_pop_without_lock(self): method test_pop_highest_priority (line 473) | def test_pop_highest_priority(self): method test_is_item_on_queue (line 492) | def test_is_item_on_queue(self): method test_is_item_not_on_queue (line 503) | def test_is_item_not_on_queue(self): FILE: mula/tests/unit/test_rankers.py class BoefjeRankerTestCase (line 8) | class BoefjeRankerTestCase(TestCase): method setUp (line 15) | def setUp(self): method _obj_with_latest_task (line 20) | def _obj_with_latest_task(self, modified_at: datetime) -> mock.Mock: method test_rank_new_task_returns_2 (line 27) | def test_rank_new_task_returns_2(self): method test_rank_falsy_latest_task_returns_2 (line 32) | def test_rank_falsy_latest_task_returns_2(self): method test_rank_task_just_ran_is_close_to_max_priority (line 38) | def test_rank_task_just_ran_is_close_to_max_priority(self): method test_rank_task_older_than_max_days_returns_3 (line 46) | def test_rank_task_older_than_max_days_returns_3(self): method test_rank_task_within_grace_period_returns_minus_one (line 50) | def test_rank_task_within_grace_period_returns_minus_one(self): method test_rank_decays_monotonically_over_time (line 57) | def test_rank_decays_monotonically_over_time(self): class BoefjeRankerTimeBasedTestCase (line 67) | class BoefjeRankerTimeBasedTestCase(TestCase): method test_rank_returns_creation_epoch (line 68) | def test_rank_returns_creation_epoch(self): class NormalizerRankerTestCase (line 75) | class NormalizerRankerTestCase(TestCase): method test_rank_returns_boefje_meta_ended_at_epoch (line 81) | def test_rank_returns_boefje_meta_ended_at_epoch(self): method test_rank_orders_older_raws_lower (line 87) | def test_rank_orders_older_raws_lower(self): FILE: mula/tests/unit/test_utils.py class ExpiringDictTestCase (line 7) | class ExpiringDictTestCase(unittest.TestCase): method test_lifetime_expired (line 8) | def test_lifetime_expired(self): method test_lifetime_not_expired (line 14) | def test_lifetime_not_expired(self): method test_toggle_expire (line 20) | def test_toggle_expire(self): FILE: mula/tests/utils/functions.py class TestModel (line 14) | class TestModel(pydantic.BaseModel): method __init__ (line 22) | def __init__(self, **data: Any): method hash (line 29) | def hash(self) -> str: function create_test_model (line 33) | def create_test_model() -> TestModel: function create_task_push (line 37) | def create_task_push(priority: int, organisation: str, data: TestModel |... function create_task_push_dict (line 44) | def create_task_push_dict(priority: int, organisation: str, data: TestMo... function create_schedule (line 48) | def create_schedule(scheduler_id: str, data: Any | None = None) -> model... function create_task (line 53) | def create_task(scheduler_id: str, organisation: str, priority: int = 0,... function create_boefje (line 67) | def create_boefje() -> models.Boefje: function compile_query (line 73) | def compile_query(query: Query) -> str: FILE: mula/tests/utils/json.py class UUIDEncoder (line 5) | class UUIDEncoder(json.JSONEncoder): method default (line 6) | def default(self, obj): FILE: mula/tests/utils/memory.py function get_process_memory (line 7) | def get_process_memory(): function profile_memory (line 13) | def profile_memory(func, *args, **kwargs): FILE: octopoes/.ci/mock_bits/url_classification_mock/url_classification_mock.py function run (line 10) | def run(url: URL, additional_oois: list, config: dict) -> Iterator[OOI]: FILE: octopoes/bits/ask_disallowed_domains/ask_disallowed_domains.py function run (line 11) | def run(input_ooi: Network, additional_oois: list, config: dict[str, Any... FILE: octopoes/bits/ask_port_specification/ask_port_specification.py function run (line 11) | def run(input_ooi: Network, additional_oois: list, config: dict[str, Any... FILE: octopoes/bits/ask_url_params_to_ignore/ask_url_params_to_ignore.py function run (line 11) | def run(input_ooi: Network, additional_oois: list, config: dict[str, Any... FILE: octopoes/bits/check_csp_header/check_csp_header.py function is_xss_capable (line 18) | def is_xss_capable(content_type: str) -> bool: function run (line 24) | def run(resource: HTTPResource, additional_oois: list[HTTPHeader], confi... function _ip_valid (line 133) | def _ip_valid(source: str) -> bool: function _create_kat_finding (line 146) | def _create_kat_finding(header: Reference, kat_id: str, description: str... function _source_valid (line 152) | def _source_valid(policy: list[str]) -> bool: FILE: octopoes/bits/check_cve_2021_41773/check_cve_2021_41773.py function run (line 9) | def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, ... FILE: octopoes/bits/check_hsts_header/check_hsts_header.py function run (line 10) | def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, ... function _create_kat_finding (line 41) | def _create_kat_finding(header: Reference, kat_id: str, description: str... FILE: octopoes/bits/cipher_classification/cipher_classification.py function get_severity_and_reasons (line 17) | def get_severity_and_reasons(cipher_suite: str) -> list[tuple[str, str]]: function get_highest_severity_and_all_reasons (line 47) | def get_highest_severity_and_all_reasons(cipher_suites: dict) -> tuple[s... function run (line 80) | def run(input_ooi: TLSCipher, additional_oois: list, config: dict[str, A... FILE: octopoes/bits/default_findingtype_risk/default_findingtype_risk.py function run (line 8) | def run(input_ooi: FindingType, additional_oois: list, config: dict[str,... FILE: octopoes/bits/definitions.py class BitParameterDefinition (line 17) | class BitParameterDefinition(BaseModel): class BitDefinition (line 22) | class BitDefinition(BaseModel): function get_bit_definitions (line 33) | def get_bit_definitions() -> dict[str, BitDefinition]: FILE: octopoes/bits/disallowed_csp_hostnames/disallowed_csp_hostnames.py function get_disallowed_hostnames_from_config (line 13) | def get_disallowed_hostnames_from_config(config, config_key, default): function run (line 20) | def run(input_ooi: HTTPHeaderHostname, additional_oois: list, config: di... FILE: octopoes/bits/dns_alias_resolving/dns_alias_resolving.py function run (line 10) | def run( FILE: octopoes/bits/dns_resolving/dns_resolving.py function run (line 9) | def run(hostname: Hostname, additional_oois: list[DNSARecord | DNSAAAARe... FILE: octopoes/bits/domain_owner_verification/domain_owner_verification.py function run (line 14) | def run(nameserver_record: DNSNSRecord, additional_oois, config: dict[st... FILE: octopoes/bits/expiring_certificate/expiring_certificate.py function run (line 13) | def run(input_ooi: X509Certificate, additional_oois: list[Website], conf... FILE: octopoes/bits/https_availability/https_availability.py function run (line 10) | def run(input_ooi: IPAddress, additional_oois: list[IPPort | Website], c... FILE: octopoes/bits/https_redirect/https_redirect.py function run (line 9) | def run(input_ooi: HostnameHTTPURL, additional_oois: list[HTTPHeader], c... FILE: octopoes/bits/internetnl/internetnl.py function run (line 10) | def run(input_ooi: Hostname, additional_oois: list[Finding | Website], c... FILE: octopoes/bits/ipv6_nameservers/ipv6_nameservers.py function run (line 10) | def run(hostname: Hostname, additional_oois: list[DNSAAAARecord | DNSARe... FILE: octopoes/bits/ipv6_webservers/ipv6_webservers.py function run (line 9) | def run( FILE: octopoes/bits/missing_caa/missing_caa.py function run (line 12) | def run(input_ooi: Hostname, additional_oois: list[DNSCAARecord | NXDOMA... FILE: octopoes/bits/missing_dkim/missing_dkim.py function run (line 13) | def run(input_ooi: Hostname, additional_oois: list[DKIMExists | NXDOMAIN... FILE: octopoes/bits/missing_dmarc/missing_dmarc.py function run (line 13) | def run(input_ooi: Hostname, additional_oois: list[DMARCTXTRecord | NXDO... FILE: octopoes/bits/missing_headers/missing_headers.py function is_xss_capable (line 21) | def is_xss_capable(content_type: str) -> bool: function run (line 27) | def run(resource: HTTPResource, additional_oois: list[HTTPHeader], confi... FILE: octopoes/bits/missing_spf/missing_spf.py function run (line 13) | def run(input_ooi: Hostname, additional_oois: list[DNSSPFRecord | NXDOMA... FILE: octopoes/bits/nxdomain_flag/nxdomain_flag.py function run (line 10) | def run(input_ooi: Hostname, additional_oois: list[NXDOMAIN], config: di... FILE: octopoes/bits/nxdomain_header_flag/nxdomain_header_flag.py function run (line 11) | def run( FILE: octopoes/bits/oois_in_headers/oois_in_headers.py function is_url (line 14) | def is_url(input_str): function get_ignored_url_params (line 19) | def get_ignored_url_params(config: dict, config_key: str, default: list)... function remove_ignored_params (line 26) | def remove_ignored_params(url: str, ignored_params: list[str]) -> str: function run (line 39) | def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, ... FILE: octopoes/bits/port_classification_ip/port_classification_ip.py function get_ports_from_config (line 43) | def get_ports_from_config(config, config_key, default): function run (line 50) | def run(input_ooi: IPPort, additional_oois: list, config: dict[str, Any]... FILE: octopoes/bits/port_common/port_common.py function run (line 25) | def run(input_ooi: IPPort, additional_oois: list, config: dict) -> Itera... FILE: octopoes/bits/resource_discovery/resource_discovery.py function run (line 9) | def run(hostname: Hostname, additional_oois: list[HostnameHTTPURL | Webs... FILE: octopoes/bits/retire_js/retire_js.py function run (line 13) | def run(input_ooi: Software, additional_oois: list[SoftwareInstance], co... function _check_vulnerabilities (line 43) | def _check_vulnerabilities(name: str, package_version: str, known_vulner... function _process_name (line 61) | def _process_name(name: str) -> str: function _hash_identifiers (line 65) | def _hash_identifiers(identifiers: dict[str, str | list[str]]) -> str: function _check_versions (line 72) | def _check_versions(package_version: str, known_vulnerability: dict) -> ... FILE: octopoes/bits/runner.py class ModuleException (line 10) | class ModuleException(Exception): class BitRunner (line 14) | class BitRunner: method __init__ (line 15) | def __init__(self, bit_definition: BitDefinition): method run (line 18) | def run(self, *args: Any, **kwargs: Any) -> list[OOI]: method __str__ (line 30) | def __str__(self) -> str: function _bit_run_signature (line 34) | def _bit_run_signature(input_ooi: OOI, additional_oois: list[OOI], confi... FILE: octopoes/bits/spf_discovery/internetnl_spf_parser.py function _parse_ipv6 (line 36) | def _parse_ipv6(tokens): function _check_toplabel (line 67) | def _check_toplabel(tokens): function _check_domain_end (line 79) | def _check_domain_end(tokens): function parse (line 138) | def parse(spf_record): FILE: octopoes/bits/spf_discovery/spf_discovery.py function run (line 19) | def run(input_ooi: DNSTXTRecord, additional_oois: list, config: dict[str... function parse_ip_qualifiers (line 64) | def parse_ip_qualifiers( function parse_a_mx_qualifiers (line 93) | def parse_a_mx_qualifiers( function parse_ptr_exists_include_mechanism (line 121) | def parse_ptr_exists_include_mechanism( function parse_redirect_mechanism (line 150) | def parse_redirect_mechanism(mechanism: str, input_ooi: DNSTXTRecord, sp... FILE: octopoes/bits/ssl_certificate_hostname/ssl_certificate_hostname.py function is_part_of_wildcard (line 13) | def is_part_of_wildcard(hostname: str, wildcard: str) -> bool: function hostname_in_qualifiers (line 20) | def hostname_in_qualifiers(hostname: str, qualifiers: list[str]) -> bool: function run (line 24) | def run( FILE: octopoes/bits/two_ipv6_nameservers/two_ipv6_nameservers.py function run (line 10) | def run(hostname: Hostname, additional_oois: list[Finding | DNSNSRecord]... FILE: octopoes/bits/url_classification/url_classification.py function run (line 11) | def run(url: URL, additional_oois: list, config: dict[str, Any]) -> Iter... FILE: octopoes/bits/url_discovery/url_discovery.py function run (line 10) | def run( FILE: octopoes/bits/website_discovery/website_discovery.py function run (line 11) | def run( FILE: octopoes/octopoes/api/api.py function lifespan (line 68) | async def lifespan(app: FastAPI): function http_validation_exception_handler (line 97) | def http_validation_exception_handler(_: Request, exc: RequestValidation... function http_exception_handler (line 103) | def http_exception_handler(_: Request, exc: RequestError) -> None: function invalid_field (line 109) | def invalid_field(_: Request, exc: InvalidField) -> None: function invalid_path (line 115) | def invalid_path(_: Request, exc: InvalidPath) -> None: function value_error (line 121) | def value_error(_: Request, exc: ValueError) -> None: function type_not_found (line 127) | def type_not_found(_: Request, exc: TypeNotFound) -> None: function node_not_found_exception_handler (line 132) | def node_not_found_exception_handler(_: Request, exc: NodeNotFound) -> N... function not_found_exception_handler (line 138) | def not_found_exception_handler(_: Request, exc: ObjectNotFoundException... function uncaught_exception_handler (line 144) | def uncaught_exception_handler(_: Request, exc: Exception) -> None: function root_health (line 150) | def root_health() -> ServiceHealth: FILE: octopoes/octopoes/api/bulk_router.py function list_reports (line 25) | def list_reports( function list_object_clients (line 58) | def list_object_clients( FILE: octopoes/octopoes/api/models.py class ServiceHealth (line 11) | class ServiceHealth(BaseModel): class _BaseObservation (line 22) | class _BaseObservation(BaseModel): class Observation (line 32) | class Observation(_BaseObservation): class Declaration (line 39) | class Declaration(BaseModel): class Affirmation (line 50) | class Affirmation(BaseModel): class ScanProfileDeclaration (line 60) | class ScanProfileDeclaration(BaseModel): class ValidatedObservation (line 70) | class ValidatedObservation(_BaseObservation): class ValidatedDeclaration (line 78) | class ValidatedDeclaration(BaseModel): class ValidatedAffirmation (line 89) | class ValidatedAffirmation(BaseModel): FILE: octopoes/octopoes/api/router.py function extract_client (line 46) | def extract_client(client: str = Path(...)) -> str: function extract_valid_time (line 50) | def extract_valid_time(valid_time: AwareDatetime) -> datetime: function extract_types (line 54) | def extract_types(types: list[str] = Query(["OOI"])) -> set[type[OOI]]: function extract_reference (line 61) | def extract_reference(reference: str = Query("")) -> Reference: function extract_references (line 65) | def extract_references(references: list[str]) -> list[Reference]: function extract_references_from_query (line 69) | def extract_references_from_query(references: list[str] = Query("")) -> ... function settings (line 73) | def settings() -> Settings: function xtdb_session (line 77) | def xtdb_session( function octopoes_service (line 83) | def octopoes_service(client: str = Depends(extract_client)) -> OctopoesS... function health (line 89) | def health(octopoes: OctopoesService = Depends(octopoes_service)) -> Ser... function list_objects (line 95) | def list_objects( function query (line 113) | def query( function query_many (line 131) | def query_many( function load_objects_bulk (line 177) | def load_objects_bulk( function get_objects_by_reference (line 187) | def get_objects_by_reference( function get_object (line 197) | def get_object( function get_object_history (line 206) | def get_object_history( function list_random_objects (line 228) | def list_random_objects( function delete_object (line 238) | def delete_object( function delete_origin (line 249) | def delete_origin( function delete_many (line 261) | def delete_many( function get_tree (line 274) | def get_tree( function list_origins (line 286) | def list_origins( function list_origin_parameters (line 310) | def list_origin_parameters( function save_observation (line 319) | def save_observation( function save_declaration (line 335) | def save_declaration( function save_many_declarations (line 351) | def save_many_declarations( function save_affirmation (line 369) | def save_affirmation( function list_scan_profiles (line 386) | def list_scan_profiles( function save_scan_profile (line 395) | def save_scan_profile( function save_many (line 411) | def save_many( function recalculate_scan_profiles (line 429) | def recalculate_scan_profiles( function get_scan_profile_inheritance (line 439) | def get_scan_profile_inheritance( function list_findings (line 457) | def list_findings( function list_reports (line 475) | def list_reports( function get_report (line 486) | def get_report( function get_finding_type_count (line 495) | def get_finding_type_count( function create_node (line 502) | def create_node(xtdb_session_: XTDBSession = Depends(xtdb_session)) -> N... function delete_node (line 511) | def delete_node(xtdb_session_: XTDBSession = Depends(xtdb_session)) -> N... function recalculate_bits (line 520) | def recalculate_bits(octopoes: OctopoesService = Depends(octopoes_servic... function exporter (line 533) | def exporter(xtdb_session_: XTDBSession = Depends(xtdb_session)) -> Any: function importer (line 538) | def importer(data: bytes, xtdb_session_: XTDBSession, reset: bool = Fals... function importer_add (line 568) | async def importer_add(request: Request, xtdb_session_: XTDBSession = De... function importer_new (line 577) | async def importer_new(request: Request, xtdb_session_: XTDBSession = De... function migrate_origins (line 586) | def migrate_origins( FILE: octopoes/octopoes/config/settings.py class BackwardsCompatibleEnvSettings (line 21) | class BackwardsCompatibleEnvSettings(EnvSettingsSource): method __call__ (line 24) | def __call__(self) -> dict[str, Any]: class Settings (line 41) | class Settings(BaseSettings): method settings_customise_sources (line 85) | def settings_customise_sources( FILE: octopoes/octopoes/connector/__init__.py class ConnectorException (line 1) | class ConnectorException(Exception): method __init__ (line 2) | def __init__(self, value: str): method __str__ (line 5) | def __str__(self) -> str: class RemoteException (line 9) | class RemoteException(ConnectorException): class DecodeException (line 13) | class DecodeException(ConnectorException): FILE: octopoes/octopoes/connector/katalogus.py class KATalogusClient (line 4) | class KATalogusClient: method __init__ (line 5) | def __init__(self, base_uri: str): method get_organisations (line 8) | def get_organisations(self) -> list[str]: FILE: octopoes/octopoes/connector/octopoes.py class OctopoesAPIConnector (line 43) | class OctopoesAPIConnector: method __init__ (line 51) | def __init__(self, base_uri: str, client: str, timeout: int = 30): method _verify_response (line 60) | def _verify_response(response: Response) -> None: method root_health (line 75) | def root_health(self) -> ServiceHealth: method health (line 78) | def health(self) -> ServiceHealth: method list_objects (line 81) | def list_objects( method get (line 124) | def get(self, reference: Reference, valid_time: datetime) -> OOIType: method get_history (line 148) | def get_history( method get_tree (line 172) | def get_tree( method list_origins (line 193) | def list_origins( method delete_origin (line 219) | def delete_origin(self, origin_id: str, valid_time: datetime, sync: bo... method save_observation (line 229) | def save_observation(self, observation: Observation, sync: bool = Fals... method save_declaration (line 237) | def save_declaration(self, declaration: Declaration, sync: bool = Fals... method save_many_declarations (line 245) | def save_many_declarations(self, declarations: list[Declaration], sync... method save_affirmation (line 257) | def save_affirmation(self, affirmation: Affirmation, sync: bool = Fals... method save_scan_profile (line 265) | def save_scan_profile(self, scan_profile: ScanProfile, valid_time: dat... method save_many_scan_profiles (line 273) | def save_many_scan_profiles( method delete (line 285) | def delete(self, reference: Reference, valid_time: datetime, sync: boo... method delete_many (line 295) | def delete_many(self, references: list[Reference], valid_time: datetim... method list_origin_parameters (line 305) | def list_origin_parameters(self, origin_id: set[str], valid_time: date... method create_node (line 310) | def create_node(self): method delete_node (line 315) | def delete_node(self): method get_scan_profile_inheritance (line 320) | def get_scan_profile_inheritance(self, reference: Reference, valid_tim... method count_findings_by_severity (line 325) | def count_findings_by_severity(self, valid_time: datetime) -> dict[str... method list_findings (line 330) | def list_findings( method list_reports (line 359) | def list_reports( method bulk_list_reports (line 375) | def bulk_list_reports( method list_object_clients (line 386) | def list_object_clients(self, reference: Reference, clients: set[str],... method get_report (line 396) | def get_report(self, report_id: str, valid_time: datetime) -> Hydrated... method load_objects_bulk (line 403) | def load_objects_bulk( method recalculate_bits (line 414) | def recalculate_bits(self) -> int: method query (line 417) | def query( method query_many (line 439) | def query_many( method export_all (line 451) | def export_all(self): method import_add (line 454) | def import_add(self, content): method import_new (line 457) | def import_new(self, content): method _bulk_migrate_origins (line 460) | def _bulk_migrate_origins(self, origins: list[Origin], valid_time: dat... FILE: octopoes/octopoes/core/app.py function get_xtdb_client (line 16) | def get_xtdb_client(base_uri: str, client: str) -> XTDBHTTPClient: function close_rabbit_channel (line 22) | def close_rabbit_channel(queue_uri: str) -> None: function get_octopoes (line 35) | def get_octopoes(client: str) -> OctopoesService: function bootstrap_octopoes (line 41) | def bootstrap_octopoes(client: str, xtdb_session: XTDBSession | None = N... FILE: octopoes/octopoes/core/service.py function find_relation_in_tree (line 53) | def find_relation_in_tree(relation: str, tree: ReferenceTree) -> list[OOI]: class OctopoesService (line 65) | class OctopoesService: method __init__ (line 66) | def __init__(self, event_manager: EventManager, session: XTDBSession, ... method ooi_repository (line 72) | def ooi_repository(self): method origin_repository (line 76) | def origin_repository(self): method origin_parameter_repository (line 80) | def origin_parameter_repository(self): method scan_profile_repository (line 84) | def scan_profile_repository(self): method _populate_scan_profiles (line 88) | def _populate_scan_profiles(self, oois: ValuesView[OOI], valid_time: d... method _populate_scan_profiles (line 91) | def _populate_scan_profiles(self, oois: list[OOI], valid_time: datetim... method _populate_scan_profiles (line 93) | def _populate_scan_profiles( method get_ooi (line 107) | def get_ooi(self, reference: Reference, valid_time: datetime) -> OOI: method get_ooi_history (line 111) | def get_ooi_history( method list_ooi (line 132) | def list_ooi( method get_ooi_tree (line 150) | def get_ooi_tree( method _delete_ooi (line 161) | def _delete_ooi(self, reference: Reference, valid_time: datetime) -> N... method save_origin (line 173) | def save_origin( method _run_inference (line 213) | def _run_inference(self, origin: Origin, valid_time: datetime) -> None: method check_path_level (line 272) | def check_path_level(path_level: int | None, current_level: int) -> bool: method recalculate_scan_profiles (line 275) | def recalculate_scan_profiles(self, valid_time: datetime) -> None: method process_event (line 390) | def process_event(self, event: DBEvent) -> None: method _on_create_ooi (line 404) | def _on_create_ooi(self, event: OOIDBEvent) -> None: method _on_update_ooi (line 446) | def _on_update_ooi(self, event: OOIDBEvent) -> None: method _on_delete_ooi (line 467) | def _on_delete_ooi(self, event: OOIDBEvent) -> None: method _on_create_origin (line 491) | def _on_create_origin(self, event: OriginDBEvent) -> None: method _on_update_origin (line 498) | def _on_update_origin(self, event: OriginDBEvent) -> None: method _on_delete_origin (line 506) | def _on_delete_origin(self, event: OriginDBEvent) -> None: method _on_create_origin_parameter (line 514) | def _on_create_origin_parameter(self, event: OriginParameterDBEvent) -... method _on_update_origin_parameter (line 525) | def _on_update_origin_parameter(self, event: OriginParameterDBEvent) -... method _on_delete_origin_parameter (line 529) | def _on_delete_origin_parameter(self, event: OriginParameterDBEvent) -... method _run_inferences (line 540) | def _run_inferences(self, event: ScanProfileDBEvent) -> None: method _on_create_scan_profile (line 547) | def _on_create_scan_profile(self, event: ScanProfileDBEvent) -> None: method _on_update_scan_profile (line 550) | def _on_update_scan_profile(self, event: ScanProfileDBEvent) -> None: method _on_delete_scan_profile (line 553) | def _on_delete_scan_profile(self, event: ScanProfileDBEvent) -> None: method list_random_ooi (line 556) | def list_random_ooi( method get_scan_profile_inheritance (line 561) | def get_scan_profile_inheritance( method recalculate_bits (line 628) | def recalculate_bits(self) -> int: method health (line 666) | def health(self) -> ServiceHealth: method commit (line 681) | def commit(self, sync: bool = False): FILE: octopoes/octopoes/events/events.py class OperationType (line 12) | class OperationType(Enum): class DBEvent (line 18) | class DBEvent(BaseModel): method primary_key (line 25) | def primary_key(self) -> str: class OOIDBEvent (line 29) | class OOIDBEvent(DBEvent): method primary_key (line 35) | def primary_key(self) -> str: class OriginDBEvent (line 41) | class OriginDBEvent(DBEvent): method primary_key (line 47) | def primary_key(self) -> str: class OriginParameterDBEvent (line 53) | class OriginParameterDBEvent(DBEvent): method primary_key (line 59) | def primary_key(self) -> str: class ScanProfileDBEvent (line 65) | class ScanProfileDBEvent(DBEvent): method primary_key (line 72) | def primary_key(self) -> Reference: FILE: octopoes/octopoes/events/manager.py class AbstractOOI (line 19) | class AbstractOOI(BaseModel): class ScanProfileMutation (line 25) | class ScanProfileMutation(BaseModel): function get_rabbit_channel (line 35) | def get_rabbit_channel(queue_uri: str) -> BlockingChannel: class EventManager (line 51) | class EventManager: method __init__ (line 52) | def __init__( method publish (line 68) | def publish(self, event: DBEvent) -> None: method _publish (line 81) | def _publish(self, event: DBEvent, push_to_celery=True) -> None: method _try_connect (line 130) | def _try_connect(self): method _connect (line 142) | def _connect(self) -> None: FILE: octopoes/octopoes/models/__init__.py class Reference (line 11) | class Reference(str): method parse (line 13) | def parse(cls, ref_str: str) -> tuple[str, str]: method class_ (line 18) | def class_(self) -> str: method natural_key (line 22) | def natural_key(self) -> str: method class_type (line 26) | def class_type(self) -> type[OOI]: method tokenized (line 33) | def tokenized(self) -> PrimaryKeyToken: method human_readable (line 37) | def human_readable(self) -> str: method __get_pydantic_core_schema__ (line 41) | def __get_pydantic_core_schema__(cls, source_type: Any, handler: GetCo... method validate (line 45) | def validate(cls, v: str, info: ValidationInfo) -> Any: method __repr__ (line 50) | def __repr__(self) -> str: method from_str (line 54) | def from_str(cls, ref_str: str) -> Reference: class ScanLevel (line 58) | class ScanLevel(IntEnum): method __str__ (line 65) | def __str__(self) -> str: class ScanProfileType (line 69) | class ScanProfileType(Enum): class ScanProfileBase (line 75) | class ScanProfileBase(BaseModel): method __eq__ (line 81) | def __eq__(self, other): method __hash__ (line 86) | def __hash__(self): method human_readable (line 90) | def human_readable(self) -> str: class EmptyScanProfile (line 94) | class EmptyScanProfile(ScanProfileBase): class DeclaredScanProfile (line 99) | class DeclaredScanProfile(ScanProfileBase): class InheritedScanProfile (line 103) | class InheritedScanProfile(ScanProfileBase): class OOI (line 110) | class OOI(BaseModel): method model_post_init (line 123) | def model_post_init(self, __context: Any) -> None: # noqa: F841 method __str__ (line 126) | def __str__(self) -> str: method get_object_type (line 130) | def get_object_type(cls) -> str: method strict_subclasses (line 134) | def strict_subclasses(cls) -> list[type[OOI]]: method get_ooi_type (line 141) | def get_ooi_type(cls) -> str: method ooi_type (line 146) | def ooi_type(self) -> str: method human_readable (line 150) | def human_readable(self) -> str: method natural_key (line 154) | def natural_key(self) -> str: method get_information_id (line 172) | def get_information_id(self) -> str: method reference (line 185) | def reference(self) -> Reference: method get_reverse_relation_name (line 189) | def get_reverse_relation_name(cls, attr: str) -> str: method get_tokenized_primary_key (line 193) | def get_tokenized_primary_key(cls, natural_key: str) -> PrimaryKeyToken: method format_reference_human_readable (line 208) | def format_reference_human_readable(cls, reference: Reference) -> str: method traversable (line 212) | def traversable(cls) -> bool: method serialize (line 215) | def serialize(self) -> SerializedOOI: method _serialize_value (line 224) | def _serialize_value(self, value: Any, required: bool) -> SerializedOO... method __hash__ (line 241) | def __hash__(self) -> int: function format_id_short (line 248) | def format_id_short(id_: str) -> str: class PrimaryKeyToken (line 255) | class PrimaryKeyToken(RootModel): method __getattr__ (line 258) | def __getattr__(self, item: str) -> Any: method __getitem__ (line 261) | def __getitem__(self, item: str) -> Any: function get_leaf_subclasses (line 268) | def get_leaf_subclasses(cls: type[OOI]) -> set[type[OOI]]: function build_token_tree (line 275) | def build_token_tree(ooi_class: type[OOI]) -> dict[str, dict | str]: FILE: octopoes/octopoes/models/datetime.py function _validate_timezone_aware_datetime (line 6) | def _validate_timezone_aware_datetime(value: datetime) -> datetime: FILE: octopoes/octopoes/models/exception.py class ObjectNotFoundException (line 4) | class ObjectNotFoundException(Exception): method __init__ (line 5) | def __init__(self, value: str): class TypeNotFound (line 9) | class TypeNotFound(ValueError): FILE: octopoes/octopoes/models/explanation.py class InheritanceSection (line 6) | class InheritanceSection(BaseModel): FILE: octopoes/octopoes/models/ooi/certificate.py class AlgorithmType (line 13) | class AlgorithmType(Enum): class X509Certificate (line 25) | class X509Certificate(OOI): method expired (line 52) | def expired(self): method format_reference_human_readable (line 58) | def format_reference_human_readable(cls, reference: Reference) -> str: class SubjectAlternativeName (line 62) | class SubjectAlternativeName(OOI): class SubjectAlternativeNameHostname (line 70) | class SubjectAlternativeNameHostname(SubjectAlternativeName): method format_reference_human_readable (line 88) | def format_reference_human_readable(cls, reference: Reference) -> str: class SubjectAlternativeNameIP (line 92) | class SubjectAlternativeNameIP(SubjectAlternativeName): method format_reference_human_readable (line 110) | def format_reference_human_readable(cls, reference: Reference) -> str: class SubjectAlternativeNameQualifier (line 114) | class SubjectAlternativeNameQualifier(SubjectAlternativeName): method format_reference_human_readable (line 132) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/config.py class Config (line 9) | class Config(OOI): method format_reference_human_readable (line 21) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/dns/records.py class DNSRecord (line 11) | class DNSRecord(OOI): method _get_record_type (line 23) | def _get_record_type(cls) -> str: method format_reference_human_readable (line 28) | def format_reference_human_readable(cls, reference: Reference) -> str: class DNSARecord (line 33) | class DNSARecord(DNSRecord): class DNSAAAARecord (line 49) | class DNSAAAARecord(DNSRecord): class DNSMXRecord (line 65) | class DNSMXRecord(DNSRecord): class DNSTXTRecord (line 77) | class DNSTXTRecord(DNSRecord): method natural_key (line 89) | def natural_key(self) -> str: class DNSNSRecord (line 97) | class DNSNSRecord(DNSRecord): class DNSCNAMERecord (line 113) | class DNSCNAMERecord(DNSRecord): class DNSSOARecord (line 124) | class DNSSOARecord(DNSRecord): method format_reference_human_readable (line 147) | def format_reference_human_readable(cls, reference: Reference) -> str: class NXDOMAIN (line 152) | class NXDOMAIN(OOI): method format_reference_human_readable (line 163) | def format_reference_human_readable(cls, reference: Reference) -> str: class DNSPTRRecord (line 167) | class DNSPTRRecord(DNSRecord): method format_reference_human_readable (line 179) | def format_reference_human_readable(cls, reference: Reference) -> str: class CAATAGS (line 183) | class CAATAGS(Enum): method __str__ (line 199) | def __str__(self) -> str: class DNSCAARecord (line 203) | class DNSCAARecord(DNSRecord): FILE: octopoes/octopoes/models/ooi/dns/zone.py class DNSZone (line 15) | class DNSZone(OOI): method format_reference_human_readable (line 33) | def format_reference_human_readable(cls, reference: Reference) -> str: class Hostname (line 37) | class Hostname(OOI): method hostname_valid (line 62) | def hostname_valid(cls, v: str) -> str: method format_reference_human_readable (line 75) | def format_reference_human_readable(cls, reference: Reference) -> str: class ResolvedHostname (line 79) | class ResolvedHostname(OOI): method format_reference_human_readable (line 95) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/email_security.py class DNSSPFRecord (line 12) | class DNSSPFRecord(OOI): method natural_key (line 31) | def natural_key(self) -> str: method format_reference_human_readable (line 37) | def format_reference_human_readable(cls, reference: Reference) -> str: class MechanismQualifier (line 41) | class MechanismQualifier(Enum): method __str__ (line 62) | def __str__(self): class DNSSPFMechanism (line 71) | class DNSSPFMechanism(OOI): class DNSSPFMechanismIP (line 83) | class DNSSPFMechanismIP(DNSSPFMechanism): method format_reference_human_readable (line 105) | def format_reference_human_readable(cls, reference: Reference) -> str: class DNSSPFMechanismHostname (line 112) | class DNSSPFMechanismHostname(DNSSPFMechanism): method format_reference_human_readable (line 130) | def format_reference_human_readable(cls, reference: Reference) -> str: class DNSSPFMechanismNetBlock (line 137) | class DNSSPFMechanismNetBlock(DNSSPFMechanism): method format_reference_human_readable (line 155) | def format_reference_human_readable(cls, reference: Reference) -> str: class DMARCTXTRecord (line 163) | class DMARCTXTRecord(OOI): method format_reference_human_readable (line 180) | def format_reference_human_readable(cls, reference: Reference) -> str: class DKIMExists (line 184) | class DKIMExists(OOI): method format_reference_human_readable (line 194) | def format_reference_human_readable(cls, reference: Reference) -> str: class DKIMSelector (line 198) | class DKIMSelector(OOI): method format_reference_human_readable (line 212) | def format_reference_human_readable(cls, reference: Reference) -> str: class DKIMKey (line 216) | class DKIMKey(OOI): method format_reference_human_readable (line 227) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/findings.py class RiskLevelSeverity (line 16) | class RiskLevelSeverity(Enum): method __gt__ (line 40) | def __gt__(self, other: RiskLevelSeverity) -> bool: method __str__ (line 43) | def __str__(self) -> str: class FindingType (line 47) | class FindingType(OOI): method format_reference_human_readable (line 74) | def format_reference_human_readable(cls, reference: Reference) -> str: class ADRFindingType (line 78) | class ADRFindingType(FindingType): class CVEFindingType (line 84) | class CVEFindingType(FindingType): class CWEFindingType (line 92) | class CWEFindingType(FindingType): class CAPECFindingType (line 100) | class CAPECFindingType(FindingType): class RetireJSFindingType (line 108) | class RetireJSFindingType(FindingType): class SnykFindingType (line 114) | class SnykFindingType(FindingType): class KATFindingType (line 122) | class KATFindingType(FindingType): class Finding (line 128) | class Finding(OOI): method natural_key (line 141) | def natural_key(self) -> str: method format_reference_human_readable (line 147) | def format_reference_human_readable(cls, reference: Reference) -> str: class MutedFinding (line 154) | class MutedFinding(OOI): method format_reference_human_readable (line 173) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/geography.py class GeographicPoint (line 9) | class GeographicPoint(OOI): method natural_key (line 29) | def natural_key(self) -> str: FILE: octopoes/octopoes/models/ooi/monitoring.py class Application (line 9) | class Application(OOI): class Incident (line 18) | class Incident(OOI): FILE: octopoes/octopoes/models/ooi/network.py class Network (line 13) | class Network(OOI): method format_reference_human_readable (line 31) | def format_reference_human_readable(cls, reference: Reference) -> str: class IPAddress (line 35) | class IPAddress(OOI): method format_reference_human_readable (line 45) | def format_reference_human_readable(cls, reference: Reference) -> str: class IPAddressV4 (line 49) | class IPAddressV4(IPAddress): class IPAddressV6 (line 67) | class IPAddressV6(IPAddress): class Protocol (line 85) | class Protocol(Enum): class PortState (line 101) | class PortState(Enum): class IPPort (line 123) | class IPPort(OOI): method format_reference_human_readable (line 147) | def format_reference_human_readable(cls, reference: Reference) -> str: class AutonomousSystem (line 152) | class AutonomousSystem(OOI): class NetBlock (line 171) | class NetBlock(OOI): method format_reference_human_readable (line 187) | def format_reference_human_readable(cls, reference: Reference) -> str: class IPV6NetBlock (line 191) | class IPV6NetBlock(NetBlock): class IPV4NetBlock (line 213) | class IPV4NetBlock(NetBlock): FILE: octopoes/octopoes/models/ooi/question.py class Question (line 13) | class Question(OOI): method json_schema_valid (line 26) | def json_schema_valid(cls, schema: str) -> str: method config_pk (line 38) | def config_pk(self) -> str: FILE: octopoes/octopoes/models/ooi/reports.py class ReportData (line 11) | class ReportData(OOI): method format_reference_human_readable (line 21) | def format_reference_human_readable(cls, reference: Reference) -> str: class BaseReport (line 25) | class BaseReport(OOI): class AssetReport (line 40) | class AssetReport(BaseReport): method format_reference_human_readable (line 56) | def format_reference_human_readable(cls, reference: Reference) -> str: class Report (line 60) | class Report(BaseReport): method format_reference_human_readable (line 69) | def format_reference_human_readable(cls, reference: Reference) -> str: class HydratedReport (line 73) | class HydratedReport(BaseReport): method format_reference_human_readable (line 82) | def format_reference_human_readable(cls, reference: Reference) -> str: method to_report (line 85) | def to_report(self) -> Report: class ReportRecipe (line 94) | class ReportRecipe(OOI): FILE: octopoes/octopoes/models/ooi/scans.py class ExternalScan (line 6) | class ExternalScan(OOI): method format_reference_human_readable (line 16) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/service.py class Service (line 8) | class Service(OOI): method format_reference_human_readable (line 18) | def format_reference_human_readable(cls, reference: Reference) -> str: class IPService (line 22) | class IPService(OOI): method format_reference_human_readable (line 33) | def format_reference_human_readable(cls, reference: Reference) -> str: class TLSCipher (line 39) | class TLSCipher(OOI): method format_reference_human_readable (line 50) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/software.py class Software (line 7) | class Software(OOI): method format_reference_human_readable (line 19) | def format_reference_human_readable(cls, reference: Reference) -> str: class SoftwareInstance (line 26) | class SoftwareInstance(OOI): method natural_key (line 37) | def natural_key(self) -> str: method format_reference_human_readable (line 41) | def format_reference_human_readable(cls, reference: Reference) -> str: FILE: octopoes/octopoes/models/ooi/web.py function format_web_url_token (line 14) | def format_web_url_token(token: PrimaryKeyToken) -> str: class Website (line 24) | class Website(OOI): method format_reference_human_readable (line 36) | def format_reference_human_readable(cls, reference: Reference) -> str: class WebScheme (line 44) | class WebScheme(Enum): class WebURL (line 49) | class WebURL(OOI): class HostnameHTTPURL (line 57) | class HostnameHTTPURL(WebURL): method format_reference_human_readable (line 66) | def format_reference_human_readable(cls, reference: Reference) -> str: class IPAddressHTTPURL (line 72) | class IPAddressHTTPURL(WebURL): method format_reference_human_readable (line 81) | def format_reference_human_readable(cls, reference: Reference) -> str: class HTTPResource (line 87) | class HTTPResource(OOI): method format_reference_human_readable (line 99) | def format_reference_human_readable(cls, reference: Reference) -> str: class HTTPHeader (line 113) | class HTTPHeader(OOI): method format_reference_human_readable (line 125) | def format_reference_human_readable(cls, reference: Reference) -> str: class URL (line 140) | class URL(OOI): method format_reference_human_readable (line 153) | def format_reference_human_readable(cls, reference: Reference) -> str: class HTTPHeaderURL (line 157) | class HTTPHeaderURL(OOI): method format_reference_human_readable (line 167) | def format_reference_human_readable(cls, reference: Reference) -> str: class HTTPHeaderHostname (line 182) | class HTTPHeaderHostname(OOI): method format_reference_human_readable (line 192) | def format_reference_human_readable(cls, reference: Reference) -> str: class ImageMetadata (line 207) | class ImageMetadata(OOI): method format_reference_human_readable (line 217) | def format_reference_human_readable(cls, reference: Reference) -> str: class RESTAPI (line 238) | class RESTAPI(OOI): method format_reference_human_readable (line 247) | def format_reference_human_readable(cls, reference: Reference) -> str: class APIDesignRule (line 251) | class APIDesignRule(OOI): method format_reference_human_readable (line 261) | def format_reference_human_readable(cls, reference: Reference) -> str: class APIDesignRuleResult (line 265) | class APIDesignRuleResult(OOI): method format_reference_human_readable (line 277) | def format_reference_human_readable(cls, reference: Reference) -> str: class SecurityTXT (line 286) | class SecurityTXT(OOI): FILE: octopoes/octopoes/models/origin.py class OriginType (line 11) | class OriginType(Enum): class Origin (line 18) | class Origin(BaseModel): method __sub__ (line 26) | def __sub__(self, other: Origin) -> set[Reference]: method id (line 33) | def id(self) -> str: method __eq__ (line 41) | def __eq__(self, other): class OriginParameter (line 53) | class OriginParameter(BaseModel): method id (line 58) | def id(self) -> str: FILE: octopoes/octopoes/models/pagination.py class Paginated (line 8) | class Paginated(BaseModel, Generic[T]): FILE: octopoes/octopoes/models/path.py class Direction (line 25) | class Direction(Enum): class Segment (line 30) | class Segment: method __init__ (line 31) | def __init__(self, source_type: type[OOI], direction: Direction, prope... method __hash__ (line 37) | def __hash__(self): method parse_step (line 42) | def parse_step(cls, step: str) -> tuple[Direction, str, type[OOIType] ... method calculate_step (line 58) | def calculate_step(cls, source_type: type[OOI], step: str) -> Segment: method reverse (line 76) | def reverse(self) -> Segment: method encode (line 87) | def encode(self) -> str: method __eq__ (line 96) | def __eq__(self, other: object) -> bool: method __str__ (line 107) | def __str__(self) -> str: method __repr__ (line 116) | def __repr__(self) -> str: class Path (line 120) | class Path: method __init__ (line 121) | def __init__(self, segments: list[Segment]): method parse (line 125) | def parse(cls, path: str) -> Path: method reverse (line 136) | def reverse(self) -> Path: method __str__ (line 140) | def __str__(self) -> str: method __eq__ (line 145) | def __eq__(self, other: object) -> bool: method __lt__ (line 151) | def __lt__(self, other): method __hash__ (line 154) | def __hash__(self): method __repr__ (line 157) | def __repr__(self) -> str: function get_paths_to_neighbours (line 161) | def get_paths_to_neighbours(source_type: type[OOI]) -> set[Path]: function _cached_paths_to_neighbours (line 169) | def _cached_paths_to_neighbours(cls_name: str) -> set[Path]: function get_max_scan_level_inheritance (line 190) | def get_max_scan_level_inheritance(segment: Segment) -> int | None: function get_max_scan_level_issuance (line 206) | def get_max_scan_level_issuance(segment: Segment) -> int | None: FILE: octopoes/octopoes/models/persistence.py function ReferenceField (line 18) | def ReferenceField( FILE: octopoes/octopoes/models/transaction.py class TransactionRecord (line 6) | class TransactionRecord(BaseModel): FILE: octopoes/octopoes/models/tree.py class ReferenceNode (line 11) | class ReferenceNode(BaseModel): method filter_children (line 15) | def filter_children(self, filter_fn: Callable[[ReferenceNode], bool]) ... method collect_references (line 28) | def collect_references(self) -> set[Reference]: class ReferenceTree (line 42) | class ReferenceTree(BaseModel): FILE: octopoes/octopoes/models/types.py function get_all_types (line 179) | def get_all_types(cls_: type[OOI]) -> Iterator[type[OOI]]: function get_abstract_types (line 191) | def get_abstract_types() -> set[type[OOI]]: function get_concrete_types (line 198) | def get_concrete_types() -> set[type[OOI]]: function get_collapsed_types (line 209) | def get_collapsed_types() -> set[type[OOI]]: function to_concrete (line 224) | def to_concrete(object_types: set[type[OOI]]) -> set[type[OOI]]: function type_by_name (line 236) | def type_by_name(type_name: str) -> type[OOI]: function concrete_type_by_name (line 244) | def concrete_type_by_name(type_name: str) -> type[OOI]: function related_object_type (line 253) | def related_object_type(field: FieldInfo) -> type[OOI]: function get_relations (line 260) | def get_relations(object_type: type[OOI]) -> dict[str, type[OOI]]: function _cached_relations (line 266) | def _cached_relations(cls_name: str) -> dict[str, type[OOI]]: function get_relation (line 276) | def get_relation(object_type: type[OOI], property_name: str) -> type[OOI]: function _cached_relation (line 285) | def _cached_relation(cls_name: str, property_name: str) -> type[OOI]: FILE: octopoes/octopoes/repositories/ooi_repository.py function merge_ooi (line 39) | def merge_ooi(ooi_new: OOI, ooi_old: OOI) -> tuple[OOI, bool]: class OOIRepository (line 56) | class OOIRepository(Repository): method __init__ (line 57) | def __init__(self, event_manager: EventManager): method get (line 60) | def get(self, reference: Reference, valid_time: datetime) -> OOI: method get_history (line 63) | def get_history( method load_bulk (line 76) | def load_bulk( method load_bulk_as_list (line 81) | def load_bulk_as_list( method get_neighbours (line 90) | def get_neighbours( method list_oois (line 95) | def list_oois( method list_oois_by_object_types (line 109) | def list_oois_by_object_types(self, types: set[type[OOI]], valid_time:... method list_random (line 112) | def list_random( method list_neighbours (line 121) | def list_neighbours(self, references: set[Reference], paths: set[Path]... method save (line 124) | def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetim... method delete_if_exists (line 127) | def delete_if_exists(self, reference: Reference, valid_time: datetime)... method delete (line 130) | def delete(self, reference: Reference, valid_time: datetime) -> None: method get_tree (line 133) | def get_tree( method list_oois_without_scan_profile (line 143) | def list_oois_without_scan_profile(self, valid_time: datetime) -> set[... method count_findings_by_severity (line 146) | def count_findings_by_severity(self, valid_time: datetime) -> Counter: method list_findings (line 149) | def list_findings( method list_reports (line 163) | def list_reports( method get_report (line 168) | def get_report(self, valid_time: datetime, report_id: str | Reference)... method get_bit_configs (line 171) | def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, ... method list_related (line 174) | def list_related(self, ooi: OOI, path: Path, valid_time: datetime) -> ... method query (line 177) | def query( class XTDBReferenceNode (line 183) | class XTDBReferenceNode(RootModel): method to_reference_node (line 186) | def to_reference_node(self, pk_prefix: str) -> ReferenceNode | None: function escape_string (line 223) | def escape_string(string): class XTDBOOIRepository (line 228) | class XTDBOOIRepository(OOIRepository): method __init__ (line 231) | def __init__(self, event_manager: EventManager, session: XTDBSession): method commit (line 235) | def commit(self, sync: bool = False): method serialize (line 239) | def serialize(cls, ooi: OOI) -> dict[str, Any]: method deserialize (line 255) | def deserialize( method get (line 283) | def get(self, reference: Reference, valid_time: datetime) -> OOI: method get_history (line 294) | def get_history( method load_bulk (line 321) | def load_bulk( method load_bulk_as_list (line 333) | def load_bulk_as_list( method list_oois (line 406) | def list_oois( method list_oois_by_object_types (line 524) | def list_oois_by_object_types( method list_random (line 533) | def list_random( method get_tree (line 569) | def get_tree( method _get_related_objects (line 588) | def _get_related_objects( method _get_tree_level (line 604) | def _get_tree_level( method decode_segment (line 652) | def decode_segment(cls, encoded_segment: str) -> Segment: method construct_neighbour_query (line 667) | def construct_neighbour_query(cls, reference: Reference, paths: set[Pa... method construct_neighbour_query_multi (line 691) | def construct_neighbour_query_multi(cls, references: set[Reference], p... method get_neighbours (line 712) | def get_neighbours( method list_neighbours (line 736) | def list_neighbours(self, references: set[Reference], paths: set[Path]... method save (line 755) | def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetim... method delete_if_exists (line 786) | def delete_if_exists(self, reference: Reference, valid_time: datetime)... method delete (line 792) | def delete(self, reference: Reference, valid_time: datetime) -> None: method list_oois_without_scan_profile (line 802) | def list_oois_without_scan_profile(self, valid_time: datetime) -> set[... method count_findings_by_severity (line 812) | def count_findings_by_severity(self, valid_time: datetime) -> Counter: method get_bit_configs (line 840) | def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, ... method list_related (line 853) | def list_related(self, ooi: OOI | Reference, path: Path, valid_time: d... method list_findings (line 862) | def list_findings( method simplify_keys (line 958) | def simplify_keys(self, data: dict[str, Any]) -> dict[str, Any]: method list_reports (line 972) | def list_reports( method get_report (line 1000) | def get_report(self, valid_time: datetime, report_id: str | Reference)... method query (line 1017) | def query( FILE: octopoes/octopoes/repositories/origin_parameter_repository.py class OriginParameterRepository (line 19) | class OriginParameterRepository(Repository): method __init__ (line 20) | def __init__(self, event_manager: EventManager): method get (line 23) | def get(self, origin_parameter_id: str, valid_time: datetime) -> Origi... method save (line 26) | def save(self, origin_parameter: OriginParameter, valid_time: datetime... method delete (line 29) | def delete(self, origin_parameter: OriginParameter, valid_time: dateti... method list_by_origin (line 32) | def list_by_origin(self, origin_id: set[str], valid_time: datetime) ->... method list_by_reference (line 35) | def list_by_reference(self, reference: Reference, valid_time: datetime... class XTDBOriginParameterRepository (line 39) | class XTDBOriginParameterRepository(OriginParameterRepository): method __init__ (line 42) | def __init__(self, event_manager: EventManager, session: XTDBSession): method commit (line 46) | def commit(self, sync: bool = False): method serialize (line 50) | def serialize(cls, origin_parameter: OriginParameter) -> dict[str, Any]: method deserialize (line 57) | def deserialize(cls, data: dict[str, Any]) -> OriginParameter: method get (line 60) | def get(self, origin_parameter_id: str, valid_time: datetime) -> Origi... method list_by_origin (line 69) | def list_by_origin(self, origin_id: set[str], valid_time: datetime) ->... method list_by_reference (line 74) | def list_by_reference(self, reference: Reference, valid_time: datetime... method save (line 81) | def save(self, origin_parameter: OriginParameter, valid_time: datetime... method delete (line 101) | def delete(self, origin_parameter: OriginParameter, valid_time: dateti... FILE: octopoes/octopoes/repositories/origin_repository.py class OriginRepository (line 20) | class OriginRepository(Repository): method __init__ (line 21) | def __init__(self, event_manager: EventManager): method get (line 24) | def get(self, origin_id: str, valid_time: datetime) -> Origin: method save (line 27) | def save(self, origin: Origin, valid_time: datetime) -> None: method list_origins (line 30) | def list_origins( method delete (line 44) | def delete(self, origin: Origin, valid_time: datetime) -> None: class XTDBOriginRepository (line 48) | class XTDBOriginRepository(OriginRepository): method __init__ (line 51) | def __init__(self, event_manager: EventManager, session: XTDBSession): method commit (line 55) | def commit(self, sync: bool = False): method serialize (line 59) | def serialize(cls, origin: Origin) -> dict[str, Any]: method deserialize (line 67) | def deserialize(cls, data: dict[str, Any]) -> Origin: method list_origins (line 70) | def list_origins( method get (line 107) | def get(self, id_: str, valid_time: datetime) -> Origin: method save (line 116) | def save(self, origin: Origin, valid_time: datetime) -> None: method delete (line 147) | def delete(self, origin: Origin, valid_time: datetime) -> None: FILE: octopoes/octopoes/repositories/repository.py class Repository (line 1) | class Repository: method commit (line 2) | def commit(self, sync: bool = False): FILE: octopoes/octopoes/repositories/scan_profile_repository.py class ScanProfileRepository (line 21) | class ScanProfileRepository(Repository): method __init__ (line 22) | def __init__(self, event_manager: EventManager): method get (line 25) | def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanP... method save (line 28) | def save( method list_scan_profiles (line 33) | def list_scan_profiles(self, scan_profile_type: str | None, valid_time... method delete (line 36) | def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) ... method get_bulk (line 39) | def get_bulk(self, references: set[Reference], valid_time: datetime) -... class XTDBScanProfileRepository (line 43) | class XTDBScanProfileRepository(ScanProfileRepository): method __init__ (line 47) | def __init__(self, event_manager: EventManager, session: XTDBSession): method commit (line 51) | def commit(self, sync: bool = False): method format_id (line 55) | def format_id(cls, ooi_reference: Reference) -> str: method serialize (line 59) | def serialize(cls, scan_profile: ScanProfile) -> dict[str, Any]: method deserialize (line 66) | def deserialize(cls, data: dict[str, Any]) -> ScanProfileBase: method list_scan_profiles (line 69) | def list_scan_profiles(self, scan_profile_type: str | None, valid_time... method get (line 77) | def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanP... method save (line 87) | def save( method delete (line 104) | def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) ... method get_bulk (line 116) | def get_bulk(self, references: set[Reference], valid_time: datetime) -... FILE: octopoes/octopoes/tasks/scanprofiles.py function scan_profile_recalculations (line 46) | def scan_profile_recalculations(katalogusclient: KATalogusClient, octopi... function recalculate_scan_profiles_for_org (line 67) | def recalculate_scan_profiles_for_org(recalc_org: dict) -> int | None: function main (line 113) | def main(): FILE: octopoes/octopoes/tasks/tasks.py function handle_event (line 47) | def handle_event(event: dict) -> None: FILE: octopoes/octopoes/xtdb/__init__.py class FieldSet (line 11) | class FieldSet(Enum): class ForeignKey (line 16) | class ForeignKey(BaseModel): class Datamodel (line 23) | class Datamodel(BaseModel): FILE: octopoes/octopoes/xtdb/client.py class OperationType (line 22) | class OperationType(Enum): class Transaction (line 33) | class Transaction(BaseModel): class XTDBStatus (line 38) | class XTDBStatus(BaseModel): function _get_xtdb_http_session (line 49) | def _get_xtdb_http_session(base_url: str) -> httpx.Client: class XTDBHTTPClient (line 58) | class XTDBHTTPClient: method __init__ (line 59) | def __init__(self, base_url: str, node: str | None): method _verify_response (line 64) | def _verify_response(response: Response) -> None: method node_url (line 76) | def node_url(self) -> str: method status (line 81) | def status(self) -> XTDBStatus: method get_entity (line 87) | def get_entity(self, entity_id: str, valid_time: datetime | None = Non... method get_entity_history (line 97) | def get_entity_history( method query (line 136) | def query(self, query: str | Query, valid_time: datetime | None = None... method await_transaction (line 148) | def await_transaction(self, transaction_id: int) -> None: method submit_transaction (line 152) | def submit_transaction(self, operations: list[Operation]) -> None: method list_nodes (line 160) | def list_nodes(self) -> list[str]: method create_node (line 165) | def create_node(self) -> None: method delete_node (line 173) | def delete_node(self) -> None: method export_transactions (line 185) | def export_transactions(self): method sync (line 190) | def sync(self, timeout: int | None = None) -> Any: method latest_completed_tx (line 201) | def latest_completed_tx(self) -> JsonValue: class XTDBSession (line 207) | class XTDBSession: method __init__ (line 208) | def __init__(self, client: XTDBHTTPClient): method __enter__ (line 214) | def __enter__(self): method __exit__ (line 217) | def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_t... method add (line 220) | def add(self, operation: Operation) -> None: method put (line 223) | def put(self, document: str | dict[str, Any], valid_time: datetime) ->... method commit (line 226) | def commit(self, sync: bool = False) -> int: method reset (line 252) | def reset(self) -> None: method sync (line 257) | def sync(self) -> None: method listen_post_commit (line 261) | def listen_post_commit(self, callback: Callable[[], None]) -> None: FILE: octopoes/octopoes/xtdb/exceptions.py class XTDBException (line 1) | class XTDBException(Exception): class NodeNotFound (line 5) | class NodeNotFound(XTDBException): class ObjectNotFound (line 9) | class ObjectNotFound(XTDBException): FILE: octopoes/octopoes/xtdb/query.py class InvalidField (line 12) | class InvalidField(ValueError): class InvalidPath (line 16) | class InvalidPath(ValueError): class Aliased (line 21) | class Aliased: class Query (line 56) | class Query: method where (line 82) | def where(self, ooi_type: Ref, **kwargs) -> Query: method where_in (line 90) | def where_in(self, ooi_type: Ref, **kwargs: Iterable[str]) -> Query: method format (line 99) | def format(self) -> str: method from_path (line 105) | def from_path(cls, path: Path) -> Query: method pull (line 158) | def pull(self, ooi_type: Ref, *, fields: str = "[*]") -> Query: method find (line 166) | def find(self, item: Ref, *, index: int | None = None) -> Query: method count (line 175) | def count(self, ooi_type: Ref | None = None) -> Query: method limit (line 183) | def limit(self, limit: int) -> Query: method offset (line 186) | def offset(self, offset: int) -> Query: method order_by (line 189) | def order_by(self, ref: Aliased, ascending: bool = True) -> Query: method _copy (line 192) | def _copy(self) -> Query: method _where_field_is (line 195) | def _where_field_is(self, ref: Ref, field_name: str, value: Ref | str ... method _where_field_in (line 262) | def _where_field_in(self, ref: Ref, field_name: str, values: Iterable[... method _add_where_statement (line 286) | def _add_where_statement(self, ref: Ref, field_name: str, to_alias: st... method _add_or_statement_for_abstract_types (line 299) | def _add_or_statement_for_abstract_types(self, ref: Ref, field_name: s... method _or_statement_for_abstract_types (line 310) | def _or_statement_for_abstract_types( method _or_statement_for_multiple_values (line 320) | def _or_statement_for_multiple_values( method _relationship (line 334) | def _relationship(self, from_alias: str, field_type: str, field_name: ... method _assert_type (line 337) | def _assert_type(self, ref: Ref, ooi_type: type[OOI]) -> str: method _to_object_type_statement (line 344) | def _to_object_type_statement(self, ref: Ref, other_type: type[OOI]) -... method _compile_where_clauses (line 347) | def _compile_where_clauses(self, *, separator: str = " ") -> str: method _compile_find_clauses (line 352) | def _compile_find_clauses(self) -> str: method _compile (line 355) | def _compile(self, *, separator: str = " ") -> str: method _get_object_alias (line 384) | def _get_object_alias(self, object_type: Ref) -> str: method __str__ (line 393) | def __str__(self) -> str: method __eq__ (line 396) | def __eq__(self, other: object) -> bool: FILE: octopoes/octopoes/xtdb/query_builder.py function join_csv (line 9) | def join_csv(values: Iterable[Any]) -> str: function str_val (line 13) | def str_val(val): function edn_escape (line 20) | def edn_escape(s: str) -> str: function generate_pull_query (line 32) | def generate_pull_query( FILE: octopoes/octopoes/xtdb/related_field_generator.py class RelatedFieldNode (line 4) | class RelatedFieldNode: method __init__ (line 5) | def __init__(self, data_model: Datamodel, object_types: set[str], path... method construct_outgoing_relations (line 21) | def construct_outgoing_relations(self, search_types: set[str] | None =... method construct_incoming_relations (line 38) | def construct_incoming_relations(self, search_types: set[str] | None =... method build_tree (line 58) | def build_tree(self, depth: int, search_types: set[str] | None = None)... method generate_field (line 68) | def generate_field(self, field_set: FieldSet, pk_prefix: str) -> str: method search_nodes (line 94) | def search_nodes(self, search_object_types=set[str]): method __repr__ (line 112) | def __repr__(self) -> str: method __str__ (line 115) | def __str__(self) -> str: method __eq__ (line 118) | def __eq__(self, other): method __hash__ (line 124) | def __hash__(self): method to_dict (line 127) | def to_dict(self): FILE: octopoes/tests/conftest.py function valid_time (line 45) | def valid_time(): class MockScanProfileRepository (line 49) | class MockScanProfileRepository(ScanProfileRepository): method __init__ (line 50) | def __init__(self, *args, **kwargs): method get (line 54) | def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanP... method save (line 57) | def save( method list_scan_profiles (line 62) | def list_scan_profiles(self, scan_profile_type: str | None, valid_time... method delete (line 68) | def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) ... function scan_profile_repository (line 73) | def scan_profile_repository(): class MockOOIRepository (line 77) | class MockOOIRepository(OOIRepository): method __init__ (line 78) | def __init__(self, *args, **kwargs): method save (line 82) | def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetim... method load_bulk (line 85) | def load_bulk(self, references: set[Reference], valid_time: datetime) ... method list_neighbours (line 88) | def list_neighbours(self, references: set[Reference], paths: set[Path]... method list_oois_without_scan_profile (line 111) | def list_oois_without_scan_profile(self, valid_time: datetime) -> set[... function ooi_repository (line 116) | def ooi_repository(): function add_ooi (line 120) | def add_ooi(ooi, ooi_repository, scan_profile_repository, valid_time): function network (line 127) | def network(ooi_repository, scan_profile_repository, valid_time): function dns_zone (line 132) | def dns_zone(network, ooi_repository, hostname, scan_profile_repository,... function hostname (line 144) | def hostname(network, ooi_repository, scan_profile_repository, valid_time): function ipaddressv4 (line 151) | def ipaddressv4(network, ooi_repository, scan_profile_repository, valid_... function resolved_hostname (line 161) | def resolved_hostname(hostname, ipaddressv4, ooi_repository, scan_profil... function http_resource_http (line 171) | def http_resource_http(hostname, ipaddressv4, network): function http_resource_https (line 180) | def http_resource_https(hostname, ipaddressv4, network): function empty_scan_profile (line 189) | def empty_scan_profile(): function declared_scan_profile (line 194) | def declared_scan_profile(): function app_settings (line 199) | def app_settings(): function octopoes_service (line 204) | def octopoes_service() -> OctopoesService: function bit_runner (line 209) | def bit_runner(mocker) -> BitRunner: function xtdb_http_client (line 214) | def xtdb_http_client(request, app_settings: Settings) -> XTDBHTTPClient: function xtdb_session (line 222) | def xtdb_session(xtdb_http_client: XTDBHTTPClient) -> Iterator[XTDBSessi... function octopoes_api_connector (line 231) | def octopoes_api_connector(xtdb_session: XTDBSession) -> OctopoesAPIConn... class MockEventManager (line 237) | class MockEventManager: method __init__ (line 238) | def __init__(self): method publish (line 243) | def publish(self, event) -> None: method unprocessed (line 246) | def unprocessed(self) -> list: method process_events (line 251) | def process_events(self, xtdb_octopoes_service: OctopoesService) -> int: method complete_process_events (line 258) | def complete_process_events(self, xtdb_octopoes_service: OctopoesServi... function event_manager (line 270) | def event_manager(xtdb_session: XTDBSession) -> Mock: function xtdb_ooi_repository (line 275) | def xtdb_ooi_repository(xtdb_session: XTDBSession, event_manager) -> Ite... function xtdb_origin_repository (line 280) | def xtdb_origin_repository(xtdb_session: XTDBSession, event_manager) -> ... function xtdb_origin_parameter_repository (line 285) | def xtdb_origin_parameter_repository(xtdb_session: XTDBSession, event_ma... function xtdb_scan_profile_repository (line 290) | def xtdb_scan_profile_repository(xtdb_session: XTDBSession, event_manage... function xtdb_octopoes_service (line 295) | def xtdb_octopoes_service(event_manager: EventManager, xtdb_session: XTD... function mock_xtdb_session (line 300) | def mock_xtdb_session(): function origin_repository (line 305) | def origin_repository(mock_xtdb_session): function seed_system (line 309) | def seed_system(xtdb_ooi_repository: XTDBOOIRepository, xtdb_origin_repo... function seed_report (line 442) | def seed_report( function seed_asset_report (line 493) | def seed_asset_report( FILE: octopoes/tests/integration/test_api_connector.py function test_bulk_operations (line 27) | def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, v... function test_bulk_reports (line 105) | def test_bulk_reports(app_settings: Settings, octopoes_api_connector: Oc... function test_list_object_clients (line 155) | def test_list_object_clients( function test_history (line 195) | def test_history(octopoes_api_connector: OctopoesAPIConnector): function test_query (line 224) | def test_query(octopoes_api_connector: OctopoesAPIConnector, valid_time:... function test_no_disappearing_ports (line 328) | def test_no_disappearing_ports(octopoes_api_connector: OctopoesAPIConnec... FILE: octopoes/tests/integration/test_io.py function test_io (line 18) | def test_io(octopoes_api_connector: OctopoesAPIConnector, valid_time: da... function test_duplicate_origin_result_filter (line 79) | def test_duplicate_origin_result_filter(octopoes_api_connector: Octopoes... FILE: octopoes/tests/integration/test_ooi_deletion.py function printer (line 27) | def printer(arg1, arg2): function test_hostname_nxd_ooi (line 35) | def test_hostname_nxd_ooi(octopoes_api_connector: OctopoesAPIConnector, ... function test_events_created_through_crud (line 69) | def test_events_created_through_crud(xtdb_octopoes_service: OctopoesServ... function test_events_created_in_worker_during_handling (line 107) | def test_events_created_in_worker_during_handling( function test_events_deletion_after_bits (line 142) | def test_events_deletion_after_bits(xtdb_octopoes_service: OctopoesServi... function test_deletion_events_after_nxdomain (line 184) | def test_deletion_events_after_nxdomain( function test_deletion_events_after_nxdomain_with_wappalyzer_findings_included (line 257) | def test_deletion_events_after_nxdomain_with_wappalyzer_findings_included( function test_easy_chain_deletion (line 355) | def test_easy_chain_deletion(xtdb_octopoes_service: OctopoesService, eve... function test_basic_chain_deletion (line 403) | def test_basic_chain_deletion(xtdb_octopoes_service: OctopoesService, ev... function test_affirming_ooi_delete (line 431) | def test_affirming_ooi_delete(octopoes_api_connector: OctopoesAPIConnect... function test_delecration_ooi_delete (line 474) | def test_delecration_ooi_delete(octopoes_api_connector: OctopoesAPIConne... function test_dangling_affirmation_delete (line 517) | def test_dangling_affirmation_delete(xtdb_octopoes_service: OctopoesServ... FILE: octopoes/tests/integration/test_ooi_repository.py function test_list_oois (line 19) | def test_list_oois(xtdb_ooi_repository: XTDBOOIRepository, valid_time: d... function test_load_bulk (line 30) | def test_load_bulk( function test_complex_query (line 76) | def test_complex_query(xtdb_ooi_repository: XTDBOOIRepository, valid_tim... FILE: octopoes/tests/integration/test_unicode.py function test_unicode_network (line 21) | def test_unicode_network(octopoes_api_connector: OctopoesAPIConnector, v... function test_unicode_hostname (line 33) | def test_unicode_hostname(octopoes_api_connector: OctopoesAPIConnector, ... FILE: octopoes/tests/integration/test_xtdb_client.py function test_node_creation_and_deletion (line 27) | def test_node_creation_and_deletion(xtdb_http_client: XTDBHTTPClient): function test_delete_non_existing_node (line 42) | def test_delete_non_existing_node(xtdb_http_client: XTDBHTTPClient): function test_query_no_results (line 47) | def test_query_no_results(xtdb_session: XTDBSession): function test_query_simple_filter (line 54) | def test_query_simple_filter(xtdb_session: XTDBSession, valid_time: date... function test_query_not_empty_on_reference_filter_for_hostname (line 88) | def test_query_not_empty_on_reference_filter_for_hostname(xtdb_session: ... function test_query_empty_on_reference_filter_for_wrong_hostname (line 126) | def test_query_empty_on_reference_filter_for_wrong_hostname(xtdb_session... function test_query_where_in (line 156) | def test_query_where_in(xtdb_session: XTDBSession, valid_time: datetime): function test_entity_history (line 221) | def test_entity_history(xtdb_session: XTDBSession, valid_time: datetime): function test_query_for_system_report (line 240) | def test_query_for_system_report( function test_query_for_web_system_report (line 332) | def test_query_for_web_system_report( function test_query_subclass_fields_and_returning_only_fields (line 377) | def test_query_subclass_fields_and_returning_only_fields( function test_order_reports_and_filter_on_parent (line 450) | def test_order_reports_and_filter_on_parent( function test_ooi_repository_list_reports_with_children (line 470) | def test_ooi_repository_list_reports_with_children( function test_query_children_of_reports (line 503) | def test_query_children_of_reports( FILE: octopoes/tests/mocks/mock_ooi_types.py class MockNetwork (line 14) | class MockNetwork(OOI): class MockIPAddress (line 20) | class MockIPAddress(OOI): class MockIPAddressV4 (line 28) | class MockIPAddressV4(MockIPAddress): class MockIPAddressV6 (line 35) | class MockIPAddressV6(MockIPAddress): class MockProtocol (line 42) | class MockProtocol(Enum): class MockPortState (line 47) | class MockPortState(Enum): class MockDNSZone (line 52) | class MockDNSZone(OOI): class MockIPPort (line 60) | class MockIPPort(OOI): class MockIPService (line 72) | class MockIPService(OOI): class MockHostname (line 82) | class MockHostname(OOI): class MockResolvedHostname (line 94) | class MockResolvedHostname(OOI): class MockDNSCNAMERecord (line 106) | class MockDNSCNAMERecord(OOI): class MockLabel (line 117) | class MockLabel(OOI): method natural_key (line 125) | def natural_key(self) -> str: function get_concrete_types (line 163) | def get_concrete_types() -> set[type[OOI]]: FILE: octopoes/tests/mocks/mock_ooi_types_abstract.py class A (line 7) | class A(OOI): class B (line 13) | class B(OOI): FILE: octopoes/tests/robot/CeleryMonitor.py function get_app (line 11) | def get_app(queue_uri: str) -> Celery: class Monitor (line 28) | class Monitor: method __init__ (line 29) | def __init__(self, queue_uri: str): method tasks (line 37) | def tasks(self): method start (line 40) | def start(self): method stop (line 43) | def stop(self): method _on_event (line 47) | def _on_event(self, event): method _monitor_events (line 50) | def _monitor_events(self, celery_app: Celery) -> None: method sum_per_type (line 71) | def sum_per_type(self) -> Counter: class CeleryMonitor (line 75) | class CeleryMonitor: method __init__ (line 78) | def __init__(self): method start_monitoring (line 81) | def start_monitoring(self, queue_uri: str): method stop_monitoring (line 86) | def stop_monitoring(self): method count_tasks (line 89) | def count_tasks(self, event_type: str) -> int: method remove_tasks (line 99) | def remove_tasks(self, event_type: str) -> int: FILE: octopoes/tests/test_api.py function patch_pika (line 15) | def patch_pika(mocker): function test_health (line 19) | def test_health(httpx_mock, patch_pika): function test_health_no_xtdb_connection (line 44) | def test_health_no_xtdb_connection(httpx_mock, patch_pika): function test_openapi (line 67) | def test_openapi(): function test_get_scan_profiles (line 72) | def test_get_scan_profiles(httpx_mock, patch_pika, valid_time): function test_create_node (line 94) | def test_create_node(httpx_mock): function test_delete_node (line 102) | def test_delete_node(httpx_mock): function test_count_findings_by_severity (line 110) | def test_count_findings_by_severity(httpx_mock, patch_pika, caplog, vali... FILE: octopoes/tests/test_bit_ask_ports.py function test_port_classification_tcp_80 (line 7) | def test_port_classification_tcp_80(): FILE: octopoes/tests/test_bit_cipher.py function test_medium_bad_ciphers (line 8) | def test_medium_bad_ciphers(): function test_good_ciphers (line 106) | def test_good_ciphers(): FILE: octopoes/tests/test_bit_csp_header.py function test_check_csp_headers (line 6) | def test_check_csp_headers(http_resource_https): function test_check_csp_headers_non_xss_capable (line 117) | def test_check_csp_headers_non_xss_capable(http_resource_https): FILE: octopoes/tests/test_bit_default_findingtype_risk.py function test_default_findingtype_risk_pending (line 6) | def test_default_findingtype_risk_pending(): function test_default_findingtype_risk_unkown (line 20) | def test_default_findingtype_risk_unkown(): FILE: octopoes/tests/test_bit_domain_verification.py function test_verification_pending (line 8) | def test_verification_pending(): function test_no_verification_pending (line 18) | def test_no_verification_pending(): FILE: octopoes/tests/test_bit_expiring_certificate.py function test_expiring_cert_simple_success (line 8) | def test_expiring_cert_simple_success(): function test_expiring_cert_simple_expired (line 21) | def test_expiring_cert_simple_expired(): function test_expiring_cert_simple_expires_soon (line 34) | def test_expiring_cert_simple_expires_soon(): FILE: octopoes/tests/test_bit_missing_headers.py function test_https_hsts (line 6) | def test_https_hsts(http_resource_https): function test_https_no_hsts (line 22) | def test_https_no_hsts(http_resource_https): function test_http_no_hsts (line 31) | def test_http_no_hsts(http_resource_http): function test_deprecated_header (line 40) | def test_deprecated_header(http_resource_https): FILE: octopoes/tests/test_bit_ports.py function test_port_classification_tcp_80 (line 8) | def test_port_classification_tcp_80(): function test_port_classification_udp_53 (line 16) | def test_port_classification_udp_53(): function test_port_classification_tcp_22 (line 24) | def test_port_classification_tcp_22(): function test_port_classification_tcp_5432 (line 35) | def test_port_classification_tcp_5432(): function test_port_classification_tcp_12345 (line 46) | def test_port_classification_tcp_12345(): function test_port_classification_tcp_3306_with_config (line 57) | def test_port_classification_tcp_3306_with_config(): function test_port_classification_udp_80 (line 68) | def test_port_classification_udp_80(): function test_port_common_tcp_80 (line 79) | def test_port_common_tcp_80(): function test_port_common_tcp_22 (line 89) | def test_port_common_tcp_22(): function test_port_common_udp_80 (line 96) | def test_port_common_udp_80(): function test_port_common_udp_53 (line 103) | def test_port_common_udp_53(): FILE: octopoes/tests/test_bit_spf_discovery.py function test_spf_discovery_simple_success (line 10) | def test_spf_discovery_simple_success(): function test_spf_discovery_invalid_ (line 41) | def test_spf_discovery_invalid_(): function test_spf_discovery_intermediate_success (line 51) | def test_spf_discovery_intermediate_success(): function test_spf_discovery_with_identifier (line 62) | def test_spf_discovery_with_identifier(): FILE: octopoes/tests/test_bits.py function test_url_extracted_by_oois_in_headers_url (line 9) | def test_url_extracted_by_oois_in_headers_url(): function test_url_extracted_by_oois_in_headers_relative_path (line 29) | def test_url_extracted_by_oois_in_headers_relative_path(http_resource_ht... function test_finding_generated_when_443_not_open_and_80_is_open (line 45) | def test_finding_generated_when_443_not_open_and_80_is_open(): FILE: octopoes/tests/test_disallowed_csp_hostnames.py function test_disallowed_csp_headers_no_findings (line 8) | def test_disallowed_csp_headers_no_findings(): function test_disallowed_csp_headers_simple_finding (line 21) | def test_disallowed_csp_headers_simple_finding(): function test_disallowed_csp_headers_allow_url_shortener (line 39) | def test_disallowed_csp_headers_allow_url_shortener(): function test_disallowed_csp_headers_disallow_custom_hostname (line 52) | def test_disallowed_csp_headers_disallow_custom_hostname(): function test_disallowed_csp_headers_disallow_subdomains (line 70) | def test_disallowed_csp_headers_disallow_subdomains(): FILE: octopoes/tests/test_event_manager.py function test_event_manager_create_ooi (line 12) | def test_event_manager_create_ooi(mocker, network): function test_event_manager_create_empty_scan_profile (line 48) | def test_event_manager_create_empty_scan_profile(mocker, empty_scan_prof... function test_event_manager_create_declared_scan_profile (line 98) | def test_event_manager_create_declared_scan_profile(mocker, declared_sca... function test_event_manager_delete_empty_scan_profile (line 168) | def test_event_manager_delete_empty_scan_profile(mocker, empty_scan_prof... FILE: octopoes/tests/test_octopoes_service.py function mocked_bit_definitions (line 15) | def mocked_bit_definitions(): function test_process_ooi_create_event (line 25) | def test_process_ooi_create_event(octopoes_service, valid_time): function test_process_event_abstract_bit_consumes (line 42) | def test_process_event_abstract_bit_consumes(octopoes_service, valid_time): function test_on_update_origin (line 59) | def test_on_update_origin(octopoes_service, valid_time): function test_on_create_scan_profile (line 89) | def test_on_create_scan_profile(octopoes_service, new_data, old_data, bi... FILE: octopoes/tests/test_ooi.py class OOITest (line 8) | class OOITest(TestCase): method test_reference_custom_natural_key (line 9) | def test_reference_custom_natural_key(self): method test_reference_equality (line 15) | def test_reference_equality(self): FILE: octopoes/tests/test_ooi_repository.py class OOIRepositoryTest (line 29) | class OOIRepositoryTest(TestCase): method setUp (line 30) | def setUp(self) -> None: method test_node_from_ooi (line 40) | def test_node_from_ooi(self): method test_node_from_ooi_with_list (line 49) | def test_node_from_ooi_with_list(self): method test_extract_node (line 63) | def test_extract_node(self): method test_construct_neighbour_query (line 78) | def test_construct_neighbour_query(self): method test_encode_outgoing_segment (line 105) | def test_encode_outgoing_segment(self): method test_encode_incoming_segment (line 109) | def test_encode_incoming_segment(self): method test_decode_outgoing_segment (line 113) | def test_decode_outgoing_segment(self): method test_decode_incoming_segment (line 119) | def test_decode_incoming_segment(self): method test_get_neighbours (line 125) | def test_get_neighbours(self): FILE: octopoes/tests/test_origin_repository.py function raise_ (line 6) | def raise_(exception): function test_save_new_origin (line 10) | def test_save_new_origin(origin_repository, valid_time, mocker): function test_save_existing_origin (line 20) | def test_save_existing_origin(origin_repository, valid_time, mocker): function test_save_new_task_id_origin (line 29) | def test_save_new_task_id_origin(origin_repository, valid_time, mocker): FILE: octopoes/tests/test_path.py class PathTest (line 29) | class PathTest(TestCase): method test_path_outoing_relation (line 30) | def test_path_outoing_relation(self): method test_path_incoming_relation (line 36) | def test_path_incoming_relation(self): method test_path_deeper (line 42) | def test_path_deeper(self): method test_step_grammar_incoming (line 48) | def test_step_grammar_incoming(self): method test_path_abstract (line 57) | def test_path_abstract(self): method test_path_reverse (line 62) | def test_path_reverse(self): method test_path_reverse_deep (line 67) | def test_path_reverse_deep(self): method test_path_double_reverse (line 88) | def test_path_double_reverse(self): method test_get_paths_to_neighbours (line 92) | def test_get_paths_to_neighbours(self): method test_get_max_inherit_scan_level_incoming (line 103) | def test_get_max_inherit_scan_level_incoming(self): method test_get_max_inherit_scan_level_outgoing (line 107) | def test_get_max_inherit_scan_level_outgoing(self): method test_parse_path_with_underscore_property_name (line 111) | def test_parse_path_with_underscore_property_name(self): method test_parse_path_outgoing_abstract (line 118) | def test_parse_path_outgoing_abstract(self): FILE: octopoes/tests/test_query.py function test_basic_field_where_clause (line 17) | def test_basic_field_where_clause(): function test_reference_field_where_clause (line 42) | def test_reference_field_where_clause(): function test_remove_duplicates (line 53) | def test_remove_duplicates(): function test_invalid_fields_name (line 58) | def test_invalid_fields_name(): function test_escaping_quotes (line 70) | def test_escaping_quotes(): function test_invalid_field_types (line 82) | def test_invalid_field_types(): function test_allow_string_for_foreign_keys (line 94) | def test_allow_string_for_foreign_keys(): function test_big_multiple_direction_query (line 106) | def test_big_multiple_direction_query(): function test_create_query_from_path (line 129) | def test_create_query_from_path(): function test_finding_type_count_query (line 163) | def test_finding_type_count_query(): function test_create_query_from_path_abstract (line 185) | def test_create_query_from_path_abstract(): function test_value_for_abstract_class_check (line 199) | def test_value_for_abstract_class_check(): function test_aliased_query (line 209) | def test_aliased_query(): function test_aliased_path_query (line 234) | def test_aliased_path_query(mocker): function test_aliased_query_starting_with_hostname (line 254) | def test_aliased_query_starting_with_hostname(mocker): function test_build_system_query_with_path_segments (line 273) | def test_build_system_query_with_path_segments(mocker): function test_build_parth_query_with_multiple_sources (line 321) | def test_build_parth_query_with_multiple_sources(mocker): function test_build_parth_query_with_multiple_sources_for_abstract_type (line 350) | def test_build_parth_query_with_multiple_sources_for_abstract_type(mocker): function test_parse_path_concrete_fields_or_abstract_types (line 378) | def test_parse_path_concrete_fields_or_abstract_types(): function test_generic_OOI_query (line 392) | def test_generic_OOI_query(mocker): FILE: octopoes/tests/test_query_builder_new.py class QueryNodeTest (line 99) | class QueryNodeTest(TestCase): method test_QueryNode_1_deep_success (line 100) | def test_QueryNode_1_deep_success(self): method test_QueryNode_2_deep_success (line 131) | def test_QueryNode_2_deep_success(self): method test_QueryNode_3_deep_dont_return_previous_relation_success (line 158) | def test_QueryNode_3_deep_dont_return_previous_relation_success(self): method test_QueryNode_multiple_root_types_success (line 167) | def test_QueryNode_multiple_root_types_success(self): method test_generate_query_sucess (line 187) | def test_generate_query_sucess(self): method test_escape_injection_success (line 204) | def test_escape_injection_success(self): method test_get_origin_by_task_id (line 213) | def test_get_origin_by_task_id(self): FILE: octopoes/tests/test_recalculate_scan_profiles.py function test_recalculate_no_profiles (line 4) | def test_recalculate_no_profiles(valid_time, ooi_repository, scan_profil... function test_recalculate_only_empty_profiles (line 11) | def test_recalculate_only_empty_profiles( function test_recalculate_inherent (line 20) | def test_recalculate_inherent( function test_recalculate_inherent_max (line 42) | def test_recalculate_inherent_max( function test_recalculate_inherent_recalculate (line 57) | def test_recalculate_inherent_recalculate( FILE: octopoes/tests/test_reference.py class ReferenceTest (line 11) | class ReferenceTest(TestCase): method test_reference (line 12) | def test_reference(self): method test_reference_from_str (line 16) | def test_reference_from_str(self): method test_reference_in_model (line 20) | def test_reference_in_model(self): method test_ref_equality (line 24) | def test_ref_equality(self): method test_parse_obj (line 29) | def test_parse_obj(self): FILE: octopoes/tests/test_reference_node.py class ReferenceNodeTest (line 83) | class ReferenceNodeTest(TestCase): method test_filter_children (line 84) | def test_filter_children(self): method test_xtdb_reference_node_to_reference_node (line 98) | def test_xtdb_reference_node_to_reference_node(self): method test_collect_references (line 111) | def test_collect_references(self): method test_xtdb_data_to_reference_node_complext (line 124) | def test_xtdb_data_to_reference_node_complext(self): FILE: octopoes/tests/test_scan_profile_repository.py class ScanProfileRepositoryTest (line 10) | class ScanProfileRepositoryTest(TestCase): method setUp (line 11) | def setUp(self) -> None: ... method test_serialize_declared (line 13) | def test_serialize_declared(self): method test_serialize_inherited (line 23) | def test_serialize_inherited(self): method test_deserialize_declared (line 35) | def test_deserialize_declared(self): method test_deserialize_inherited_legacy (line 49) | def test_deserialize_inherited_legacy(self): FILE: octopoes/tests/test_type_analysis.py function get_concrete_types (line 30) | def get_concrete_types() -> set[type[OOI]]: function get_abstract_types (line 34) | def get_abstract_types() -> set[type[OOI]]: class TypeSystemTest (line 43) | class TypeSystemTest(TestCase): method test_concrete_types (line 44) | def test_concrete_types(self): method test_abstract_types (line 60) | def test_abstract_types(self): method test_collapsed_types (line 63) | def test_collapsed_types(self): method test_abstract_to_concrete (line 78) | def test_abstract_to_concrete(self): method test_ooi_to_concrete (line 81) | def test_ooi_to_concrete(self): method test_concrete_to_concrete (line 97) | def test_concrete_to_concrete(self): method test_type_by_name (line 100) | def test_type_by_name(self): method test_get_relations (line 103) | def test_get_relations(self): method test_get_relations_abstract_class (line 106) | def test_get_relations_abstract_class(self): method test_paginated (line 109) | def test_paginated(self): FILE: octopoes/tools/analyze-bit-metric.py class BitMetric (line 13) | class BitMetric: method __init__ (line 14) | def __init__(self, data): method empty (line 27) | def empty(self): method __eq__ (line 30) | def __eq__(self, val): method __hash__ (line 39) | def __hash__(self): function cli (line 49) | def cli(ctx: click.Context, url: str, node: str, timeout: int, verbosity... function raw (line 72) | def raw(ctx: click.Context): function parse (line 78) | def parse(ctx: click.Context): FILE: octopoes/tools/rename-origin-method.py function cli (line 19) | def cli(ctx: click.Context, url: str, code: str, timeout: int, verbosity... function method_query (line 34) | def method_query(method: str): function list_ (line 51) | def list_(ctx: click.Context, method: str): function search_replace_method (line 60) | def search_replace_method(data_list: list[dict[str, Any]], search_string... function rename (line 72) | def rename(ctx: click.Context, armed: bool, method: str, renamed: str): FILE: octopoes/tools/run_bit.py function run_bit (line 31) | def run_bit(start_pdb, organization_code, bit_id, ooi): FILE: octopoes/tools/xtdb-cli.py function cli (line 20) | def cli(ctx: click.Context, url: str, node: str | None, timeout: int, ve... function nodes (line 44) | def nodes(ctx: click.Context): function create_node (line 52) | def create_node(ctx: click.Context): function delete_node (line 60) | def delete_node(ctx: click.Context): function status (line 68) | def status(ctx: click.Context): function query (line 80) | def query( function origins (line 104) | def origins(ctx: click.Context, entity: str, with_params: bool): function list_keys (line 111) | def list_keys(ctx: click.Context): function list_values (line 119) | def list_values(ctx: click.Context): function entity (line 131) | def entity( function history (line 157) | def history(ctx: click.Context, key: str, with_corrections: bool, with_d... function entity_tx (line 169) | def entity_tx( function attribute_stats (line 183) | def attribute_stats(ctx: click.Context): function sync (line 195) | def sync(ctx: click.Context, timeout: int | None): function await_tx (line 208) | def await_tx(ctx: click.Context, tx_id: int, timeout: int | None): function await_tx_time (line 221) | def await_tx_time(ctx: click.Context, tx_time: datetime.datetime, timeou... function tx_log (line 235) | def tx_log(ctx: click.Context, after_tx_id: int | None, with_ops: bool): function txs (line 243) | def txs(ctx: click.Context): function submit_tx (line 255) | def submit_tx(ctx: click.Context, txs): function tx_committed (line 268) | def tx_committed(ctx: click.Context, tx_id: int) -> None: function latest_completed_tx (line 276) | def latest_completed_tx(ctx: click.Context): function latest_submitted_tx (line 284) | def latest_submitted_tx(ctx: click.Context): function active_queries (line 292) | def active_queries(ctx: click.Context): function recent_queries (line 300) | def recent_queries(ctx: click.Context): function slowest_queries (line 308) | def slowest_queries(ctx: click.Context): function evict_by_objecttype (line 317) | def evict_by_objecttype(ctx: click.Context, objecttype: str): function evict_ooi (line 334) | def evict_ooi(ctx: click.Context, key: str): function evict_from_search (line 356) | def evict_from_search(ctx: click.Context, wetrun: bool, searchtype, sear... function put_function (line 383) | def put_function(ctx: click.Context, name: str, body: str): function call_function (line 394) | def call_function(ctx: click.Context, name: str, entity: str, arguments:... FILE: octopoes/tools/xtdb_client.py class XTDBClient (line 32) | class XTDBClient: method __init__ (line 33) | def __init__( method server (line 42) | def server(self): method client (line 46) | def client(self): method nodes (line 51) | def nodes(self) -> JsonValue: method create_node (line 56) | def create_node(self) -> JsonValue: method delete_node (line 65) | def delete_node(self) -> JsonValue: method status (line 74) | def status(self) -> JsonValue: method query (line 79) | def query( method entity (line 101) | def entity( method history (line 120) | def history(self, key: str, with_corrections: bool, with_docs: bool) -... method entity_tx (line 131) | def entity_tx( method attribute_stats (line 149) | def attribute_stats(self) -> JsonValue: method sync (line 154) | def sync(self, timeout: int | None) -> JsonValue: method await_tx (line 162) | def await_tx(self, transaction_id: int, timeout: int | None) -> JsonVa... method await_tx_time (line 170) | def await_tx_time(self, transaction_time: datetime.datetime, timeout: ... method tx_log (line 178) | def tx_log(self, after_tx_id: int | None, with_ops: bool) -> JsonValue: method origins (line 189) | def origins( method submit_tx (line 236) | def submit_tx(self, transactions: list[TransactionType], valid_time: d... method tx_committed (line 244) | def tx_committed(self, txid: int) -> JsonValue: method latest_completed_tx (line 249) | def latest_completed_tx(self) -> JsonValue: method latest_submitted_tx (line 254) | def latest_submitted_tx(self) -> JsonValue: method active_queries (line 259) | def active_queries(self) -> JsonValue: method recent_queries (line 264) | def recent_queries(self) -> JsonValue: method slowest_queries (line 269) | def slowest_queries(self) -> JsonValue: FILE: rocky/account/admin.py class KATUserAdmin (line 12) | class KATUserAdmin(UserAdmin): class AuthTokenAdmin (line 28) | class AuthTokenAdmin(admin.ModelAdmin): method save_model (line 32) | def save_model(self, request, obj, form, change): FILE: rocky/account/apps.py class AccountConfig (line 4) | class AccountConfig(AppConfig): FILE: rocky/account/forms/account_setup.py class UserRegistrationForm (line 23) | class UserRegistrationForm(forms.Form): method clean_email (line 62) | def clean_email(self): method register_user (line 68) | def register_user(self): class AccountTypeSelectForm (line 77) | class AccountTypeSelectForm(forms.Form): class TrustedClearanceLevelRadioPawsForm (line 96) | class TrustedClearanceLevelRadioPawsForm(forms.Form): class MemberRegistrationForm (line 108) | class MemberRegistrationForm(UserRegistrationForm, TrustedClearanceLevel... method __init__ (line 111) | def __init__(self, *args, **kwargs): method register_member (line 118) | def register_member(self): method is_valid (line 131) | def is_valid(self): class OrganizationForm (line 138) | class OrganizationForm(BaseRockyModelForm): class Meta (line 143) | class Meta: class IndemnificationAddForm (line 177) | class IndemnificationAddForm(BaseRockyForm): class AssignClearanceLevelForm (line 196) | class AssignClearanceLevelForm(BaseRockyForm): class AcknowledgeClearanceLevelForm (line 200) | class AcknowledgeClearanceLevelForm(BaseRockyForm): class OrganizationMemberEditForm (line 204) | class OrganizationMemberEditForm(BaseRockyModelForm, TrustedClearanceLev... method __init__ (line 212) | def __init__(self, *args, **kwargs): method save (line 226) | def save(self, commit=True): class Meta (line 234) | class Meta: class OnboardingOrganizationUpdateForm (line 239) | class OnboardingOrganizationUpdateForm(OrganizationForm): method __init__ (line 240) | def __init__(self, *args, **kwargs): class OrganizationUpdateForm (line 245) | class OrganizationUpdateForm(OrganizationForm): method __init__ (line 246) | def __init__(self, *args, **kwargs): class Meta (line 251) | class Meta: class SetPasswordForm (line 256) | class SetPasswordForm(auth_forms.SetPasswordForm): FILE: rocky/account/forms/login.py class LoginForm (line 5) | class LoginForm(AuthenticationForm): method __init__ (line 16) | def __init__(self, request=None, *args, **kwargs): FILE: rocky/account/forms/organization.py class OrganizationListForm (line 9) | class OrganizationListForm(forms.Form): method __init__ (line 16) | def __init__(self, user: KATUser, exclude_organization: Organization, ... FILE: rocky/account/forms/password_reset.py class PasswordResetForm (line 6) | class PasswordResetForm(auth_forms.PasswordResetForm): FILE: rocky/account/forms/token.py class TwoFactorSetupTokenForm (line 8) | class TwoFactorSetupTokenForm(TOTPDeviceForm): method __init__ (line 15) | def __init__(self, key, user, **kwargs): class TwoFactorVerifyTokenForm (line 23) | class TwoFactorVerifyTokenForm(AuthenticationTokenForm): method __init__ (line 29) | def __init__(self, **kwargs): method clean (line 34) | def clean(self): class TwoFactorBackupTokenForm (line 43) | class TwoFactorBackupTokenForm(BackupTokenForm): method __init__ (line 50) | def __init__(self, user, initial_device, **kwargs): FILE: rocky/account/management/commands/create_authtoken.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, *args, **options): FILE: rocky/account/migrations/0001_initial.py class Migration (line 11) | class Migration(migrations.Migration): FILE: rocky/account/migrations/0001_squashed_0004_authtoken_authtoken_unique_name.py class Migration (line 12) | class Migration(migrations.Migration): FILE: rocky/account/migrations/0002_remove_first_last_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/account/migrations/0003_alter_katuser_full_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/account/migrations/0004_authtoken_authtoken_unique_name.py class Migration (line 9) | class Migration(migrations.Migration): FILE: rocky/account/migrations/0005_katuser_clearance_level.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/account/mixins.py class OrganizationPermLookupDict (line 34) | class OrganizationPermLookupDict: method __init__ (line 35) | def __init__(self, organization_member, app_label): method __repr__ (line 38) | def __repr__(self) -> str: method __getitem__ (line 41) | def __getitem__(self, perm_name): method __iter__ (line 44) | def __iter__(self): method __bool__ (line 49) | def __bool__(self): class OrganizationPermWrapper (line 53) | class OrganizationPermWrapper: method __init__ (line 54) | def __init__(self, organization_member): method __repr__ (line 57) | def __repr__(self) -> str: method __getitem__ (line 60) | def __getitem__(self, app_label): method __iter__ (line 63) | def __iter__(self): method __contains__ (line 67) | def __contains__(self, perm_name): class UnboundOrganizationView (line 78) | class UnboundOrganizationView(ContextMixin, View): method setup (line 79) | def setup(self, request, *args, **kwargs): method get_user_organizations (line 82) | def get_user_organizations(self) -> list[str]: class OrganizationView (line 86) | class OrganizationView(ContextMixin, View): method setup (line 87) | def setup(self, request, *args, **kwargs): method indemnification_present (line 124) | def indemnification_present(self): method octopoes_api_connector (line 128) | def octopoes_api_connector(self) -> OctopoesAPIConnector: method bytes_client (line 134) | def bytes_client(self) -> BytesClient: method katalogus_client (line 138) | def katalogus_client(self) -> KATalogus: method get_context_data (line 141) | def get_context_data(self, **kwargs): method indemnification_error (line 150) | def indemnification_error(self): method may_update_clearance_level (line 154) | def may_update_clearance_level(self) -> bool: method verify_raise_clearance_level (line 160) | def verify_raise_clearance_level(self, level: int) -> bool: method raise_clearance_level (line 172) | def raise_clearance_level(self, ooi_reference: Reference, level: int) ... method raise_clearance_levels (line 183) | def raise_clearance_levels(self, ooi_references: list[Reference], leve... method can_raise_clearance_level (line 197) | def can_raise_clearance_level(self, ooi: OOI, level: int) -> bool: class OrganizationPermissionRequiredMixin (line 232) | class OrganizationPermissionRequiredMixin(PermissionRequiredMixin): method has_permission (line 237) | def has_permission(self) -> bool: class OrganizationAPIMixin (line 242) | class OrganizationAPIMixin: method get_organization (line 245) | def get_organization(self, field: str, value: str) -> Organization: method organization (line 266) | def organization(self) -> Organization: method octopoes_api_connector (line 282) | def octopoes_api_connector(self) -> OctopoesAPIConnector: method bytes_client (line 288) | def bytes_client(self) -> BytesClient: method scheduler_client (line 292) | def scheduler_client(self) -> SchedulerClient: method valid_time (line 296) | def valid_time(self) -> datetime: FILE: rocky/account/models.py class KATUserManager (line 17) | class KATUserManager(BaseUserManager): method create_user (line 23) | def create_user(self, email, password, **extra_fields): method create_superuser (line 34) | def create_superuser(self, email, password, **extra_fields): class LowercaseEmailField (line 49) | class LowercaseEmailField(models.EmailField): method to_python (line 54) | def to_python(self, value): class KATUser (line 64) | class KATUser(AbstractBaseUser, PermissionsMixin): method get_full_name (line 94) | def get_full_name(self): method all_organizations (line 98) | def all_organizations(self) -> list[Organization]: method organization_members (line 102) | def organization_members(self) -> list[OrganizationMember]: method organizations (line 109) | def organizations(self) -> list[Organization]: method organizations_including_blocked (line 121) | def organizations_including_blocked(self) -> list[Organization]: class AuthToken (line 133) | class AuthToken(AbstractAuthToken): class Meta (line 136) | class Meta: method __str__ (line 141) | def __str__(self) -> str: method generate_new_token (line 144) | def generate_new_token(self) -> str: FILE: rocky/account/validators.py function get_password_validators_help_texts (line 7) | def get_password_validators_help_texts(): FILE: rocky/account/views/account.py class PageActions (line 14) | class PageActions(Enum): class OOIClearanceMixin (line 19) | class OOIClearanceMixin: method post (line 23) | def post(self, request, *args, **kwargs): method handle_page_action (line 29) | def handle_page_action(self, action: str) -> None: class AccountView (line 44) | class AccountView(OrganizationView, TemplateView, OOIClearanceMixin): method get_context_data (line 47) | def get_context_data(self, **kwargs): FILE: rocky/account/views/login.py class LoginRockyView (line 21) | class LoginRockyView(LoginView): method get_form (line 24) | def get_form(self, step=None, **kwargs): method get_context_data (line 38) | def get_context_data(self, form, **kwargs): method get_success_url (line 49) | def get_success_url(self): class SetupRockyView (line 57) | class SetupRockyView(SetupView): method get_context_data (line 61) | def get_context_data(self, form, **kwargs): class LogoutRockyView (line 71) | class LogoutRockyView(LogoutView): FILE: rocky/account/views/password_reset.py class PasswordResetView (line 15) | class PasswordResetView(auth_views.PasswordResetView): method get_context_data (line 26) | def get_context_data(self, **kwargs): method form_valid (line 35) | def form_valid(self, form): method is_smtp_valid (line 45) | def is_smtp_valid(self): method add_error_notification (line 49) | def add_error_notification(self): method add_success_notification (line 58) | def add_success_notification(self): class PasswordResetConfirmView (line 65) | class PasswordResetConfirmView(auth_views.PasswordResetConfirmView): method get_context_data (line 74) | def get_context_data(self, **kwargs): method remove_twofactor_device (line 82) | def remove_twofactor_device(self): method form_valid (line 91) | def form_valid(self, form): method add_success_notification (line 97) | def add_success_notification(self): FILE: rocky/account/views/recover_email.py class RecoverEmailView (line 7) | class RecoverEmailView(TemplateView): method get_context_data (line 14) | def get_context_data(self, **kwargs): FILE: rocky/assets/js/autoSubmit.js function initAutoSubmitters (line 1) | function initAutoSubmitters() { function addSubmitOnClick (line 6) | function addSubmitOnClick(item) { FILE: rocky/assets/js/checkboxToggler.js function toggleCheckboxes (line 10) | function toggleCheckboxes(name, value) { function checkbox_required_validity (line 59) | function checkbox_required_validity(form, anchor, event) { function reset_validity (line 120) | function reset_validity(error_element, event) { FILE: rocky/assets/js/choiceToggle.js function toggleChoice (line 1) | function toggleChoice(form, group, active_value) { function initChoiceTogglers (line 27) | function initChoiceTogglers() { FILE: rocky/assets/js/dashboard.js function toggleItems (line 1) | function toggleItems(parent) { function toggleDataToggle (line 16) | function toggleDataToggle(item) { function toggleDashboardItems (line 27) | function toggleDashboardItems() { function toggleDashboard (line 41) | function toggleDashboard() { FILE: rocky/assets/js/dropdown.js function toggleAriaExpanded (line 1) | function toggleAriaExpanded(event) { FILE: rocky/assets/js/grabSelectionOnModalOpen.js function openDialogFromUrl (line 16) | function openDialogFromUrl(anchor) { function closeDialog (line 35) | function closeDialog(anchor) { function getSelection (line 48) | function getSelection() { function getAnchor (line 61) | function getAnchor() { FILE: rocky/assets/js/imports/utils.js function onDomReady (line 6) | function onDomReady(fn) { function ensureElementHasId (line 16) | function ensureElementHasId(element) { function onMediaQueryMatch (line 31) | function onMediaQueryMatch(media, handler) { function prependNode (line 55) | function prependNode(parent, child) { function onDomUpdate (line 67) | function onDomUpdate(handler, root) { function closest (line 81) | function closest(element, selectors) { FILE: rocky/assets/js/jsonSchemaToForm.js function loadform (line 26) | function loadform(className) { function settype (line 54) | function settype(parent, schema, original, identifier) { function renderSchema (line 68) | function renderSchema(schema, original, identifier) { function renderobject (line 77) | function renderobject(original, path, schema) { function renderarray (line 111) | function renderarray(original, path, name, schema) { function renderfield (line 236) | function renderfield(required, originalvalue, path, name, field) { function form2json (line 336) | function form2json(wrapper, schema, identifier) { function ContentFromPostObject (line 353) | function ContentFromPostObject(wrapper, identifier, path, schema) { function ContentFromPostArray (line 393) | function ContentFromPostArray(wrapper, identifier, path, fieldname, sche... function resetform (line 437) | function resetform(wrapper) { FILE: rocky/assets/js/pluginToggler.js function togglePlugins (line 1) | function togglePlugins(containerClass) { FILE: rocky/assets/js/renameReports.js function initRenameReports (line 5) | function initRenameReports() { FILE: rocky/assets/js/reportActionForms.js function renderRenameSelection (line 1) | function renderRenameSelection(modal, selection) { function renderDeleteSelection (line 36) | function renderDeleteSelection(modal, selection) { function renderRerunSelection (line 79) | function renderRerunSelection(modal, selection) { function getReportNames (line 122) | function getReportNames(selection) { function getReportTypes (line 140) | function getReportTypes(selection) { function getReportOOIs (line 158) | function getReportOOIs(selection) { function getReportReferenceDates (line 176) | function getReportReferenceDates(selection) { function getReportCreationDates (line 194) | function getReportCreationDates(selection) { FILE: rocky/assets/js/sidemenuOl.js function initSidemenus (line 16) | function initSidemenus() { function addToggleButton (line 36) | function addToggleButton(sidemenu) { function adjustMaxHeight (line 82) | function adjustMaxHeight(sidemenu) { FILE: rocky/assets/js/tabs.js class TabsManual (line 12) | class TabsManual { method constructor (line 13) | constructor(groupNode) { method setSelectedTab (line 44) | setSelectedTab(currentTab) { method moveFocusToTab (line 59) | moveFocusToTab(currentTab) { method moveFocusToPreviousTab (line 63) | moveFocusToPreviousTab(currentTab) { method moveFocusToNextTab (line 74) | moveFocusToNextTab(currentTab) { method onKeydown (line 87) | onKeydown(event) { method onClick (line 124) | onClick(event) { function initTablist (line 129) | function initTablist() { FILE: rocky/assets/js/taskDetails.js function renderHexTable (line 280) | function renderHexTable(hex_table, bytes) { function escapeHTMLEntities (line 342) | function escapeHTMLEntities(input) { FILE: rocky/assets/vendors/graph/js/graph-d3.js function showOverlay (line 6) | function showOverlay(event, { data }) { function hideOverlay (line 25) | function hideOverlay() { function filterTree (line 29) | function filterTree(treeData, filteredOoiTypes = []) { function filterBranch (line 40) | function filterBranch(treeData, filteredOoiTypes) { function collapse (line 114) | function collapse(d) { function update (line 122) | function update(source) { function showHideChildren (line 283) | function showHideChildren(event, d) { FILE: rocky/components/modal/modal.py class Modal (line 5) | class Modal(component.Component): method get_context_data (line 8) | def get_context_data(self, **kwargs): class Media (line 11) | class Media: FILE: rocky/components/modal/script.js function openDialogFromUrl (line 8) | function openDialogFromUrl() { function initDialogs (line 21) | function initDialogs(element) { function initDialog (line 28) | function initDialog(modal) { function removeDialogAnchor (line 61) | function removeDialogAnchor() { function showModalBasedOnAnchor (line 67) | function showModalBasedOnAnchor(id) { FILE: rocky/crisis_room/apps.py class CrisisRoomConfig (line 4) | class CrisisRoomConfig(AppConfig): FILE: rocky/crisis_room/forms.py class AddDashboardForm (line 15) | class AddDashboardForm(BaseRockyForm): class AddDashboardItemForm (line 19) | class AddDashboardItemForm(BaseRockyForm): method __init__ (line 32) | def __init__(self, organization, *args, **kwargs): method clean_title (line 37) | def clean_title(self): method clean_columns (line 45) | def clean_columns(self): method get_dashboard (line 53) | def get_dashboard(self) -> Dashboard | None: method get_dashboard_selection (line 62) | def get_dashboard_selection(self) -> list[tuple[str, str]]: method has_duplicate_name (line 69) | def has_duplicate_name(self, dashboard: Dashboard, name: str | None) -... method get_query (line 72) | def get_query(self) -> dict[str, Any]: method get_settings (line 75) | def get_settings(self) -> dict[str, Any]: method is_valid (line 81) | def is_valid(self): method create_dashboard_item (line 87) | def create_dashboard_item(self) -> bool: class AddObjectListDashboardItemForm (line 114) | class AddObjectListDashboardItemForm(OOIFilterForm, AddDashboardItemForm): method get_query (line 144) | def get_query(self): class AddFindingListDashboardItemForm (line 153) | class AddFindingListDashboardItemForm(FindingFilterForm, AddDashboardIte... method get_query (line 183) | def get_query(self): class AddReportSectionDashboardItemForm (line 191) | class AddReportSectionDashboardItemForm(AddDashboardItemForm): FILE: rocky/crisis_room/management/commands/dashboards.py function create_findings_dashboard_recipe (line 24) | def create_findings_dashboard_recipe( function schedule_recipe (line 58) | def schedule_recipe(organization: Organization, recipe: ReportRecipe) ->... function reschedule_recipe (line 80) | def reschedule_recipe(organization: Organization, recipe_id: str) -> None: function create_findings_dashboard (line 106) | def create_findings_dashboard( function run_findings_dashboard (line 120) | def run_findings_dashboard( class Command (line 148) | class Command(BaseCommand): method handle (line 149) | def handle(self, *args, **options): FILE: rocky/crisis_room/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0002_create_findings_dashboards.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0003_alter_dashboarddata_unique_together_and_more.py class Migration (line 11) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0004_change_name_findings_dashboard.py function change_name_findings_dashboard (line 8) | def change_name_findings_dashboard(apps, _schema_editor): class Migration (line 17) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0005_add_dashboard_permissions_to_groups.py function migrate_permissions (line 11) | def migrate_permissions(apps, _schema_editor): function get_permissions (line 18) | def get_permissions(apps, codenames): function add_dashboard_permissions_to_groups (line 33) | def add_dashboard_permissions_to_groups(apps, _schema_editor): class Migration (line 62) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0006_rename_dashboarddata_dashboarditem.py function update_permissions (line 10) | def update_permissions(apps, _schema_editor): function change_name_findings_dashboard (line 28) | def change_name_findings_dashboard(apps, _schema_editor): function change_settings_columns (line 37) | def change_settings_columns(apps, _schema_editor): function change_query_params (line 51) | def change_query_params(apps, _schema_editor): function create_findings_dashboard_for_all_orgs (line 72) | def create_findings_dashboard_for_all_orgs(apps, _schema_editor): class Migration (line 81) | class Migration(migrations.Migration): FILE: rocky/crisis_room/migrations/0007_alter_dashboarditem_source.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/crisis_room/models.py class Dashboard (line 18) | class Dashboard(models.Model): class Meta (line 26) | class Meta: method __str__ (line 29) | def __str__(self) -> str: class DashboardItemSettings (line 41) | class DashboardItemSettings(TypedDict): function get_default_dashboard_item_settings (line 46) | def get_default_dashboard_item_settings() -> DashboardItemSettings: class DashboardItem (line 51) | class DashboardItem(models.Model): class Meta (line 81) | class Meta: method __str__ (line 99) | def __str__(self) -> str: method get_query_url (line 109) | def get_query_url(self) -> str: method get_query (line 115) | def get_query(self) -> dict[str, Any]: method clean (line 120) | def clean(self) -> None: method update_position (line 129) | def update_position(self, move: Literal["up", "down"]) -> None: function get_dashboard_item_positions (line 159) | def get_dashboard_item_positions(instance: DashboardItem) -> list[int]: function dashboard_item_pre_save (line 164) | def dashboard_item_pre_save(sender, instance, *args, **kwargs): function dashboard_item_post_delete (line 175) | def dashboard_item_post_delete(sender, instance, *args, **kwargs): FILE: rocky/crisis_room/templatetags/crisis_room.py function get_column_name_finding_list (line 9) | def get_column_name_finding_list(column_value: str) -> str: function get_column_name_object_list (line 14) | def get_column_name_object_list(column_value: str) -> str: FILE: rocky/crisis_room/views.py class DashboardItemView (line 42) | class DashboardItemView: class DashboardService (line 47) | class DashboardService: method get_organizations_findings (line 49) | def get_organizations_findings(report_data: dict[str, Any]) -> dict[st... method get_reports (line 67) | def get_reports(self, valid_time: datetime, report_filters: list[tuple... method get_report_bytes_data (line 86) | def get_report_bytes_data(raw_ids: list[str]) -> dict[str, dict[str, A... method get_dashboard_items (line 98) | def get_dashboard_items(self, dashboard_items: BaseManager[DashboardIt... method get_organizations_findings_summary (line 179) | def get_organizations_findings_summary(organizations_findings: list[Da... method get_ooi_list (line 205) | def get_ooi_list(self, dashboard_item) -> dict[str, Any]: method get_finding_list (line 254) | def get_finding_list(self, dashboard_item) -> dict[str, Any]: class CrisisRoomView (line 297) | class CrisisRoomView(TemplateView): method setup (line 302) | def setup(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None: method get_context_data (line 318) | def get_context_data(self, **kwargs): class OrganizationsCrisisRoomLandingView (line 326) | class OrganizationsCrisisRoomLandingView(OrganizationView, TemplateView): method get (line 329) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any): method get_context_data (line 341) | def get_context_data(self, **kwargs): class OrganizationsCrisisRoomView (line 347) | class OrganizationsCrisisRoomView(OrganizationView, TemplateView): method setup (line 352) | def setup(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None: method get_context_data (line 371) | def get_context_data(self, **kwargs): class DeleteDashboardView (line 388) | class DeleteDashboardView(OrganizationView): method post (line 391) | def post(self, request, *args, **kwargs) -> HttpResponse: class DeleteDashboardItemView (line 418) | class DeleteDashboardItemView(OrganizationView): method post (line 421) | def post(self, request, *args, **kwargs) -> HttpResponse: class UpdateDashboardItemView (line 456) | class UpdateDashboardItemView(OrganizationView): method post (line 459) | def post(self, request, *args, **kwargs) -> HttpResponse: class AddDashboardView (line 488) | class AddDashboardView(OrganizationView, FormView): method post (line 494) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... FILE: rocky/fmea/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/fmea/migrations/0001_squashed_0004_remove_failuremode_effect_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/fmea/migrations/0002_auto_20220120_0839.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/fmea/migrations/0003_auto_20220203_1534.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/fmea/migrations/0004_remove_failuremode_effect_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/katalogus/apps.py class KATalogusConfig (line 4) | class KATalogusConfig(AppConfig): FILE: rocky/katalogus/client.py function valid_plugin_id (line 27) | def valid_plugin_id(plugin_id: str) -> str: function valid_organization_code (line 35) | def valid_organization_code(organization_code: str) -> str: class Plugin (line 43) | class Plugin(BaseModel): method can_scan (line 59) | def can_scan(self, member: OrganizationMember) -> bool: class Boefje (line 63) | class Boefje(Plugin): method serialize_consumes (line 77) | def serialize_consumes(self, consumes: set[type[OOI]]) -> set[str]: method json_schema_valid (line 82) | def json_schema_valid(cls, boefje_schema: dict) -> dict | None: method can_scan (line 93) | def can_scan(self, member: OrganizationMember) -> bool: class Normalizer (line 97) | class Normalizer(Plugin): method serialize_produces (line 103) | def serialize_produces(self, produces: set[type[OOI]]) -> set[str]: class KATalogusError (line 107) | class KATalogusError(Exception): method message (line 109) | def message(self): method __init__ (line 112) | def __init__(self, message: str | None = None): method __str__ (line 120) | def __str__(self): class KATalogusHTTPStatusError (line 124) | class KATalogusHTTPStatusError(KATalogusError): method __init__ (line 125) | def __init__(self, error: httpx.HTTPStatusError): class KATalogusHTTPError (line 131) | class KATalogusHTTPError(KATalogusError): method __init__ (line 132) | def __init__(self, error: httpx.HTTPError): class DuplicatePluginError (line 138) | class DuplicatePluginError(KATalogusError): method __init__ (line 139) | def __init__(self, error_message: str): class DuplicateNameError (line 143) | class DuplicateNameError(KATalogusError): method __init__ (line 144) | def __init__(self): class DuplicateIdError (line 148) | class DuplicateIdError(KATalogusError): method __init__ (line 149) | def __init__(self): class KATalogusNotAllowedError (line 153) | class KATalogusNotAllowedError(KATalogusError): method __init__ (line 154) | def __init__(self, error_message: str): function verify_response (line 158) | def verify_response(response: Response) -> None: class KATalogusClient (line 179) | class KATalogusClient: method __init__ (line 180) | def __init__(self, base_uri: str): method health (line 187) | def health(self) -> ServiceHealth: method organization_exists (line 192) | def organization_exists(self, organization_code: str) -> bool: method create_organization (line 200) | def create_organization(self, organization): method delete_organization (line 205) | def delete_organization(self, organization_code: str): method get_plugins (line 210) | def get_plugins(self, organization_code: str, **params) -> list[Boefje... method get_plugin (line 215) | def get_plugin(self, organization_code: str, plugin_id: str) -> Plugin: method get_plugin_settings (line 220) | def get_plugin_settings(self, organization_code: str, plugin_id: str) ... method upsert_plugin_settings (line 225) | def upsert_plugin_settings(self, organization_code: str, plugin_id: st... method delete_plugin_settings (line 231) | def delete_plugin_settings(self, organization_code: str, plugin_id: st... method clone_all_configuration_to_organization (line 237) | def clone_all_configuration_to_organization(self, from_organization: s... method get_normalizers (line 245) | def get_normalizers(self, organization_code: str) -> list[Normalizer]: method get_boefjes (line 248) | def get_boefjes(self, organization_code: str) -> list[Boefje]: method enable_plugin (line 251) | def enable_plugin(self, organization_code: str, plugin: Plugin) -> None: method enable_boefje_by_id (line 256) | def enable_boefje_by_id(self, organization_code: str, boefje_id: str) ... method disable_plugin (line 259) | def disable_plugin(self, organization_code: str, plugin: Plugin) -> None: method get_enabled_boefjes (line 263) | def get_enabled_boefjes(self, organization_code: str) -> list[Plugin]: method get_cover (line 266) | def get_cover(self, organization_code: str, plugin_id: str) -> BytesIO: method create_plugin (line 274) | def create_plugin(self, organization_code: str, plugin: Plugin) -> None: method edit_plugin (line 289) | def edit_plugin(self, organization_code: str, plugin: Plugin) -> None: method _patch_plugin_state (line 303) | def _patch_plugin_state(self, organization_code: str, plugin_id: str, ... class KATalogus (line 312) | class KATalogus: method __init__ (line 320) | def __init__(self, katalogus_client: KATalogusClient, member: Organiza... method get_plugins (line 324) | def get_plugins(self, **params) -> list[Plugin]: method get_plugin (line 327) | def get_plugin(self, plugin_id: str) -> Plugin: method get_plugin_settings (line 330) | def get_plugin_settings(self, plugin_id: str) -> dict: method upsert_plugin_settings (line 336) | def upsert_plugin_settings(self, plugin_id: str, values: dict) -> None: method delete_plugin_settings (line 342) | def delete_plugin_settings(self, plugin_id: str) -> None: method clone_all_configuration_to_organization (line 348) | def clone_all_configuration_to_organization(self, to_organization: str): method get_normalizers (line 372) | def get_normalizers(self) -> list[Normalizer]: method get_boefjes (line 375) | def get_boefjes(self) -> list[Boefje]: method enable_plugin (line 378) | def enable_plugin(self, plugin: Plugin) -> None: method enable_boefje_by_id (line 384) | def enable_boefje_by_id(self, boefje_id: str) -> None: method disable_plugin (line 390) | def disable_plugin(self, plugin: Plugin) -> None: method get_enabled_boefjes (line 396) | def get_enabled_boefjes(self) -> list[Boefje]: method get_cover (line 399) | def get_cover(self, plugin_id: str) -> BytesIO: method create_plugin (line 402) | def create_plugin(self, plugin: Plugin) -> None: method edit_plugin (line 408) | def edit_plugin(self, plugin: Plugin) -> None: function parse_boefje (line 415) | def parse_boefje(boefje: dict) -> Boefje: function parse_normalizer (line 444) | def parse_normalizer(normalizer: dict) -> Normalizer: function parse_plugin (line 465) | def parse_plugin(plugin: dict) -> Boefje | Normalizer: function get_katalogus_client (line 474) | def get_katalogus_client() -> KATalogusClient: function get_katalogus (line 478) | def get_katalogus(member: OrganizationMember) -> KATalogus: FILE: rocky/katalogus/exceptions.py class KATalogusException (line 4) | class KATalogusException(ServiceException): method __init__ (line 5) | def __init__(self, *args): class KATalogusDownException (line 9) | class KATalogusDownException(KATalogusException): class KATalogusUnhealthyException (line 13) | class KATalogusUnhealthyException(KATalogusException): FILE: rocky/katalogus/forms/katalogus_filter.py class KATalogusFilter (line 15) | class KATalogusFilter(BaseRockyForm): FILE: rocky/katalogus/forms/plugin_settings.py class PluginSchemaForm (line 11) | class PluginSchemaForm(forms.Form): method __init__ (line 16) | def __init__(self, plugin_schema: dict, values: dict, *args: Any, **kw... method populate_fields (line 22) | def populate_fields(self): method clean (line 41) | def clean(self): FILE: rocky/katalogus/health.py function get_katalogus_health (line 10) | def get_katalogus_health() -> ServiceHealth: FILE: rocky/katalogus/views/boefje_setup.py class BoefjeSetupView (line 17) | class BoefjeSetupView(OrganizationPermissionRequiredMixin, OrganizationV... method setup (line 24) | def setup(self, request, *args, **kwargs): method get_success_url (line 30) | def get_success_url(self) -> str: class AddBoefjeView (line 38) | class AddBoefjeView(BoefjeSetupView): method get_context_data (line 41) | def get_context_data(self, **kwargs): method form_valid (line 54) | def form_valid(self, form): class AddBoefjeVariantView (line 67) | class AddBoefjeVariantView(BoefjeSetupView): method setup (line 70) | def setup(self, request, *args, **kwargs): method get_initial (line 77) | def get_initial(self): method form_valid (line 101) | def form_valid(self, form): method get_context_data (line 113) | def get_context_data(self, **kwargs): class EditBoefjeView (line 139) | class EditBoefjeView(BoefjeSetupView): method setup (line 142) | def setup(self, request, *args, **kwargs): method get_initial (line 150) | def get_initial(self): method form_valid (line 176) | def form_valid(self, form): method get_context_data (line 197) | def get_context_data(self, **kwargs): function create_boefje_with_form_data (line 221) | def create_boefje_with_form_data(form_data, plugin_id: str, created: str... function get_interval_minutes (line 257) | def get_interval_minutes(interval_number, interval_frequency) -> int | N... FILE: rocky/katalogus/views/change_clearance_level.py class ChangeClearanceLevel (line 12) | class ChangeClearanceLevel(OrganizationPermissionRequiredMixin, Schedule... method setup (line 17) | def setup(self, request, *args, **kwargs): method get (line 23) | def get(self, request, *args, **kwargs): method post (line 36) | def post(self, request, *args, **kwargs): method get_oois_objects_from_text_oois (line 46) | def get_oois_objects_from_text_oois(self, oois): method get_context_data (line 49) | def get_context_data(self, **kwargs): FILE: rocky/katalogus/views/katalogus.py class KATalogusLandingView (line 13) | class KATalogusLandingView(OrganizationView): method get (line 18) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Http... class BaseKATalogusView (line 27) | class BaseKATalogusView(OrganizationView, ListView, FormView): method get_initial (line 30) | def get_initial(self) -> dict[str, Any]: method filter_katalogus (line 36) | def filter_katalogus(self, queryset): method filter_queryset (line 45) | def filter_queryset(self, queryset, filter_options): method sort_queryset (line 53) | def sort_queryset(self, queryset, sort_options): method sort_alphabetic_ascending (line 63) | def sort_alphabetic_ascending(self, queryset): method count_active_filters (line 66) | def count_active_filters(self): method get_context_data (line 73) | def get_context_data(self, **kwargs): class KATalogusView (line 84) | class KATalogusView(BaseKATalogusView): method get_queryset (line 89) | def get_queryset(self): class BoefjeListView (line 94) | class BoefjeListView(BaseKATalogusView): method get_queryset (line 99) | def get_queryset(self): class NormalizerListView (line 104) | class NormalizerListView(BaseKATalogusView): method get_queryset (line 109) | def get_queryset(self): class AboutPluginsView (line 114) | class AboutPluginsView(OrganizationView, TemplateView): method get_context_data (line 117) | def get_context_data(self, **kwargs): FILE: rocky/katalogus/views/katalogus_settings.py class ConfirmCloneSettingsView (line 18) | class ConfirmCloneSettingsView( method test_func (line 24) | def test_func(self): method get_context_data (line 28) | def get_context_data(self, **kwargs): method post (line 34) | def post(self, request, *args, **kwargs): class KATalogusSettingsView (line 46) | class KATalogusSettingsView(OrganizationPermissionRequiredMixin, Organiz... method get_context_data (line 53) | def get_context_data(self, **kwargs): method get_settings (line 70) | def get_settings(self): method get_form (line 92) | def get_form(self, form_class=None): method form_valid (line 97) | def form_valid(self, form): method get_success_url (line 100) | def get_success_url(self, **kwargs): FILE: rocky/katalogus/views/mixins.py class SinglePluginView (line 18) | class SinglePluginView(OrganizationView): method setup (line 22) | def setup(self, request: HttpRequest, *args: Any, plugin_id: str, **kw... method dispatch (line 41) | def dispatch(self, request, *args, **kwargs): method is_required_field (line 47) | def is_required_field(self, field: str) -> bool: method is_secret_field (line 51) | def is_secret_field(self, field: str) -> bool: FILE: rocky/katalogus/views/plugin_detail.py class PluginCoverImgView (line 20) | class PluginCoverImgView(OrganizationView): method get (line 23) | def get(self, request, *args, **kwargs): class PluginDetailView (line 29) | class PluginDetailView(TaskListView, PluginSettingsListView): method post (line 30) | def post(self, request, *args, **kwargs): method get_task_filters (line 68) | def get_task_filters(self) -> dict[str, str | datetime | None]: method get_oois (line 75) | def get_oois(self, selected_oois: list[str]) -> dict[str, Any]: method get_context_data (line 88) | def get_context_data(self, **kwargs): method check_plugin_type (line 95) | def check_plugin_type(self): class NormalizerDetailView (line 101) | class NormalizerDetailView(PluginDetailView): method get_context_data (line 106) | def get_context_data(self, **kwargs): class BoefjeDetailView (line 125) | class BoefjeDetailView(PluginDetailView): method get_context_data (line 133) | def get_context_data(self, **kwargs): method get_form_consumable_oois (line 167) | def get_form_consumable_oois(self) -> list[tuple[OOIType, ScheduleResp... method get_form_filtered_consumable_oois (line 179) | def get_form_filtered_consumable_oois(self) -> list[tuple[OOIType, Sch... method _filter_oois_with_schedules (line 193) | def _filter_oois_with_schedules(self, oois: dict[str, OOIType]) -> lis... FILE: rocky/katalogus/views/plugin_enable_disable.py class PluginEnableDisableView (line 14) | class PluginEnableDisableView(SinglePluginView): method post (line 15) | def post(self, request, *args, **kwargs): FILE: rocky/katalogus/views/plugin_settings_add.py class PluginSettingsAddView (line 16) | class PluginSettingsAddView(OrganizationPermissionRequiredMixin, SingleP... method get_form (line 22) | def get_form(self, **kwargs): method dispatch (line 31) | def dispatch(self, request, *args, **kwargs): method form_valid (line 42) | def form_valid(self, form): method get_context_data (line 67) | def get_context_data(self, **kwargs): method get_success_url (line 97) | def get_success_url(self): method add_error_notification (line 102) | def add_error_notification(self, message): FILE: rocky/katalogus/views/plugin_settings_delete.py class PluginSettingsDeleteView (line 15) | class PluginSettingsDeleteView(OrganizationPermissionRequiredMixin, Sing... method post (line 19) | def post(self, request, *args, **kwargs): method get_context_data (line 22) | def get_context_data(self, **kwargs): method get_success_url (line 54) | def get_success_url(self): method delete (line 59) | def delete(self, request, *args, **kwargs): FILE: rocky/katalogus/views/plugin_settings_list.py class PluginSettingsListView (line 11) | class PluginSettingsListView(SinglePluginView): method get_plugin_settings (line 20) | def get_plugin_settings(self) -> list[dict[str, Any]]: FILE: rocky/manage.py function main (line 8) | def main(): FILE: rocky/onboarding/apps.py class OnboardingConfig (line 4) | class OnboardingConfig(AppConfig): FILE: rocky/onboarding/forms.py class ClearanceLevelSelect (line 11) | class ClearanceLevelSelect(forms.Select): method create_option (line 14) | def create_option(self, *args, **kwargs): class OnboardingSetClearanceLevelForm (line 21) | class OnboardingSetClearanceLevelForm(forms.Form): class OnboardingCreateObjectURLForm (line 35) | class OnboardingCreateObjectURLForm(forms.Form): FILE: rocky/onboarding/view_helpers.py class IntroductionStepsMixin (line 16) | class IntroductionStepsMixin(StepsMixin): method build_steps (line 21) | def build_steps(self): class IntroductionRegistrationStepsMixin (line 54) | class IntroductionRegistrationStepsMixin(StepsMixin): method build_steps (line 59) | def build_steps(self): FILE: rocky/onboarding/views.py class OnboardingStart (line 49) | class OnboardingStart(OrganizationView): method get (line 50) | def get(self, request, *args, **kwargs): class OnboardingIntroductionView (line 58) | class OnboardingIntroductionView( class OnboardingIntroductionRegistrationView (line 70) | class OnboardingIntroductionRegistrationView(PermissionRequiredMixin, In... class OnboardingOrganizationSetupView (line 80) | class OnboardingOrganizationSetupView(PermissionRequiredMixin, Introduct... method get (line 91) | def get(self, request, *args, **kwargs): method post (line 98) | def post(self, request, *args, **kwargs): method get_success_url (line 106) | def get_success_url(self) -> str: method form_valid (line 110) | def form_valid(self, form): method create_first_member (line 116) | def create_first_member(self, organization): method add_success_notification (line 123) | def add_success_notification(self, org_name): class OnboardingOrganizationUpdateView (line 128) | class OnboardingOrganizationUpdateView( method get_object (line 141) | def get_object(self, queryset=None): method get_success_url (line 144) | def get_success_url(self) -> str: method form_valid (line 147) | def form_valid(self, form): method add_success_notification (line 152) | def add_success_notification(self, org_name): class OnboardingIndemnificationSetupView (line 157) | class OnboardingIndemnificationSetupView(IntroductionStepsMixin, Indemni... method get_success_url (line 165) | def get_success_url(self) -> str: class OnboardingAcknowledgeClearanceLevelView (line 171) | class OnboardingAcknowledgeClearanceLevelView( method get_context_data (line 183) | def get_context_data(self, **kwargs): class OnboardingSetupScanOOIAddView (line 190) | class OnboardingSetupScanOOIAddView( method setup (line 202) | def setup(self, request, *args, **kwargs): method get_or_create_url_object (line 205) | def get_or_create_url_object(self, url: str) -> OOI: method form_valid (line 212) | def form_valid(self, form): method build_breadcrumbs (line 221) | def build_breadcrumbs(self) -> list[Breadcrumb]: class OnboardingSetClearanceLevelView (line 231) | class OnboardingSetClearanceLevelView( method setup (line 244) | def setup(self, request, *args, **kwargs): method form_valid (line 249) | def form_valid(self, form): method get_context_data (line 258) | def get_context_data(self, **kwargs): class OnboardingClearanceLevelIntroductionView (line 265) | class OnboardingClearanceLevelIntroductionView( method get_boefjes_tiles (line 276) | def get_boefjes_tiles(self) -> list[dict[str, Any]]: method get_context_data (line 297) | def get_context_data(self, **kwargs): class OnboardingSetupScanSelectPluginsView (line 304) | class OnboardingSetupScanSelectPluginsView( method get_plugins (line 316) | def get_plugins(self) -> dict[str, list[Plugin]]: method post (line 324) | def post(self, request, *args, **kwargs): method get_context_data (line 349) | def get_context_data(self, **kwargs: Any) -> dict[str, Any]: class OnboardingChooseReportTypeView (line 355) | class OnboardingChooseReportTypeView( class OnboardingCreateReportRecipe (line 367) | class OnboardingCreateReportRecipe( method post (line 384) | def post(self, request, *args, **kwargs): method get_ooi_pks (line 397) | def get_ooi_pks(self) -> list[str]: method get_report_type_ids (line 407) | def get_report_type_ids(self) -> list[str]: method get_context_data (line 410) | def get_context_data(self, **kwargs): class OnboardingReportView (line 416) | class OnboardingReportView( method post (line 428) | def post(self, request, *args, **kwargs): method set_member_onboarded (line 441) | def set_member_onboarded(self): class CompleteOnboarding (line 448) | class CompleteOnboarding(OrganizationView): method get (line 453) | def get(self, request, *args, **kwargs): FILE: rocky/reports/apps.py class ReportsConfig (line 4) | class ReportsConfig(AppConfig): FILE: rocky/reports/forms.py class OOITypeMultiCheckboxForReportForm (line 11) | class OOITypeMultiCheckboxForReportForm(BaseRockyForm): method __init__ (line 16) | def __init__(self, ooi_types: list[str], *args: Any, **kwargs: Any): class ReportTypeMultiselectForm (line 21) | class ReportTypeMultiselectForm(BaseRockyForm): method __init__ (line 26) | def __init__(self, report_types: set[Report], *args: Any, **kwargs: Any): class ReportScheduleStartDateChoiceForm (line 32) | class ReportScheduleStartDateChoiceForm(BaseRockyForm): class ReportRecurrenceChoiceForm (line 42) | class ReportRecurrenceChoiceForm(BaseRockyForm): class ReportScheduleStartDateForm (line 52) | class ReportScheduleStartDateForm(BaseRockyForm): method clean (line 82) | def clean(self): class CustomReportScheduleForm (line 94) | class CustomReportScheduleForm(BaseRockyForm): class ReportNameForm (line 132) | class ReportNameForm(BaseRockyForm): FILE: rocky/reports/management/commands/worker.py class Command (line 6) | class Command(BaseCommand): method handle (line 9) | def handle(self, *args, **options): FILE: rocky/reports/report_types/aggregate_organisation_report/report.py class AggregateOrganisationReport (line 24) | class AggregateOrganisationReport(AggregateReport): method post_process_data (line 44) | def post_process_data( method collect_system_specific_data (line 481) | def collect_system_specific_data( FILE: rocky/reports/report_types/concatenated_report/report.py class ConcatenatedReport (line 6) | class ConcatenatedReport(Report): FILE: rocky/reports/report_types/definitions.py class ReportPlugins (line 17) | class ReportPlugins(TypedDict): function report_plugins_union (line 22) | def report_plugins_union(report_types: list[type["BaseReport"]]) -> Repo... class BaseReport (line 35) | class BaseReport: method __init__ (line 44) | def __init__(self, octopoes_api_connector: OctopoesAPIConnector): method collect_data (line 47) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... method class_attributes (line 51) | def class_attributes(cls) -> dict[str, Any]: class Report (line 66) | class Report(BaseReport): method generate_data (line 67) | def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[... method collect_data (line 70) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... method group_by_source (line 76) | def group_by_source( method group_finding_types_by_source (line 93) | def group_finding_types_by_source( method to_hostnames (line 101) | def to_hostnames(self, input_oois: Iterable[Reference], valid_time: da... method hostnames_to_human_readable (line 122) | def hostnames_to_human_readable(hostnames_by_input_ooi: dict) -> dict[... method to_ips (line 138) | def to_ips(self, input_oois: Iterable[Reference], valid_time: datetime... class MultiReport (line 159) | class MultiReport(BaseReport): method post_process_data (line 160) | def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: class AggregateReportSubReports (line 164) | class AggregateReportSubReports(TypedDict): class AggregateReport (line 169) | class AggregateReport(BaseReport): method post_process_data (line 172) | def post_process_data(self, data: dict[str, Any], valid_time: datetime... class ReportType (line 176) | class ReportType(TypedDict): FILE: rocky/reports/report_types/dns_report/report.py class DNSReport (line 17) | class DNSReport(Report): method generate_data (line 25) | def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[... FILE: rocky/reports/report_types/findings_report/report.py class FindingsReport (line 17) | class FindingsReport(Report): method generate_data (line 37) | def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[... FILE: rocky/reports/report_types/helpers.py function get_ooi_types_with_report (line 42) | def get_ooi_types_with_report() -> set[type[OOI]]: function get_report_types_for_ooi (line 49) | def get_report_types_for_ooi(ooi_pk: str) -> set[type[BaseReport]]: function get_report_types_for_oois (line 58) | def get_report_types_for_oois(oois: list[str]) -> set[type[BaseReport]]: function get_report_types_for_ooi_type (line 65) | def get_report_types_for_ooi_type(ooi_type: type[OOI]) -> set[type[BaseR... function get_report_types_for_ooi_types (line 72) | def get_report_types_for_ooi_types(ooi_types: set[type[OOI]]) -> set[typ... function get_report_by_id (line 79) | def get_report_by_id(report_id: str) -> type[BaseReport]: function get_reports (line 90) | def get_reports(report_ids: list[str]) -> list[type[BaseReport]]: function get_plugins_for_report_ids (line 94) | def get_plugins_for_report_ids(reports: list[str]) -> dict[str, set[str]]: function get_report_types_from_aggregate_report (line 108) | def get_report_types_from_aggregate_report(aggregate_report: type[Aggreg... function get_ooi_types_from_aggregate_report (line 118) | def get_ooi_types_from_aggregate_report(aggregate_report: type[Aggregate... FILE: rocky/reports/report_types/ipv6_report/report.py class System (line 15) | class System: class IPv6Report (line 20) | class IPv6Report(Report): method collect_data (line 29) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/mail_report/report.py class MailReport (line 15) | class MailReport(Report): method collect_data (line 24) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/multi_organization_report/report.py class OpenPortsDict (line 13) | class OpenPortsDict(TypedDict): class SystemSpecificDict (line 18) | class SystemSpecificDict(TypedDict): class MultiOrganizationReport (line 23) | class MultiOrganizationReport(MultiReport): method post_process_data (line 31) | def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: function collect_report_data (line 308) | def collect_report_data( FILE: rocky/reports/report_types/name_server_report/report.py class NameServerCheck (line 18) | class NameServerCheck: method __bool__ (line 23) | def __bool__(self): class NameServerChecks (line 28) | class NameServerChecks: method no_uncommon_ports (line 32) | def no_uncommon_ports(self): method has_dnssec (line 36) | def has_dnssec(self): method has_valid_dnssec (line 40) | def has_valid_dnssec(self): method __bool__ (line 43) | def __bool__(self) -> bool: method __len__ (line 46) | def __len__(self) -> int: method __add__ (line 49) | def __add__(self, other: NameServerChecks) -> NameServerChecks: class NameServerSystemReport (line 53) | class NameServerSystemReport(Report): method collect_data (line 61) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/open_ports_report/report.py class OpenPortsReport (line 13) | class OpenPortsReport(Report): method collect_data (line 22) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/rpki_report/report.py class RPKIData (line 13) | class RPKIData(TypedDict): class RPKIReport (line 18) | class RPKIReport(Report): method collect_data (line 30) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/safe_connections_report/report.py class SafeConnectionsReport (line 15) | class SafeConnectionsReport(Report): method collect_data (line 24) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/systems_report/report.py class SystemType (line 15) | class SystemType(StrEnum): class System (line 24) | class System: class SystemReport (line 51) | class SystemReport(Report): method collect_data (line 60) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/tls_report/report.py class TLSReport (line 16) | class TLSReport(Report): method generate_data (line 25) | def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[... FILE: rocky/reports/report_types/vulnerability_report/report.py class FindingsData (line 15) | class FindingsData(TypedDict): class VulnerabilityReport (line 20) | class VulnerabilityReport(Report): method collect_data (line 32) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... method get_findings (line 133) | def get_findings(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/report_types/web_system_report/report.py class WebCheck (line 18) | class WebCheck: method __bool__ (line 29) | def __bool__(self): class WebChecks (line 44) | class WebChecks: method has_csp (line 48) | def has_csp(self): method has_no_csp_vulnerabilities (line 52) | def has_no_csp_vulnerabilities(self): method redirects_http_https (line 56) | def redirects_http_https(self): method offers_https (line 60) | def offers_https(self): method has_security_txt (line 64) | def has_security_txt(self): method no_uncommon_ports (line 68) | def no_uncommon_ports(self): method has_certificates (line 72) | def has_certificates(self): method certificates_not_expired (line 76) | def certificates_not_expired(self): method certificates_not_expiring_soon (line 80) | def certificates_not_expiring_soon(self): method __bool__ (line 83) | def __bool__(self) -> bool: method __len__ (line 86) | def __len__(self) -> int: method __add__ (line 89) | def __add__(self, other: WebChecks) -> WebChecks: class WebSystemReport (line 93) | class WebSystemReport(Report): method collect_data (line 113) | def collect_data(self, input_oois: Iterable[Reference], valid_time: da... FILE: rocky/reports/runner/models.py class ReportRunner (line 4) | class ReportRunner: method run (line 5) | def run(self, recipe: ReportRecipe) -> None: class WorkerManager (line 9) | class WorkerManager: method run (line 10) | def run(self) -> None: class JobRuntimeError (line 14) | class JobRuntimeError(RuntimeError): FILE: rocky/reports/runner/report_runner.py class LocalReportRunner (line 27) | class LocalReportRunner(ReportRunner): method __init__ (line 28) | def __init__(self, bytes_client: BytesClient, valid_time: datetime | N... method run (line 32) | def run(self, report_task: ReportTask) -> None: function collect_reports (line 79) | def collect_reports( function save_report_data (line 119) | def save_report_data( function create_asset_reports (line 188) | def create_asset_reports( class ReportDataDict (line 241) | class ReportDataDict(RootModel): function aggregate_reports (line 246) | def aggregate_reports( FILE: rocky/reports/runner/worker.py class SchedulerWorkerManager (line 23) | class SchedulerWorkerManager(WorkerManager): method __init__ (line 24) | def __init__( method run (line 46) | def run(self) -> None: method _fill_queue (line 75) | def _fill_queue(self, task_queue: Queue): method _check_workers (line 109) | def _check_workers(self) -> None: method _cleanup_pending_worker_task (line 144) | def _cleanup_pending_worker_task(self, worker: mp.Process) -> None: method _worker_args (line 163) | def _worker_args(self) -> tuple: method exit (line 166) | def exit(self, signum: int | None = None): function _format_exit_code (line 203) | def _format_exit_code(exitcode: int | None) -> str: function _start_working (line 210) | def _start_working( function get_runtime_manager (line 246) | def get_runtime_manager() -> WorkerManager: FILE: rocky/reports/serializers.py class ReportSerializer (line 6) | class ReportSerializer(serializers.BaseSerializer): method to_representation (line 7) | def to_representation(self, instance): class ReportRecipeSerializer (line 22) | class ReportRecipeSerializer(serializers.Serializer): FILE: rocky/reports/templatetags/report_extra.py function sum_attribute (line 12) | def sum_attribute(checks, attribute): function sum_findings (line 17) | def sum_findings(data: dict[str, Any]) -> int: function get_report_type_name (line 22) | def get_report_type_name(report_type_id: str): function get_report_type_label_style (line 27) | def get_report_type_label_style(report_type_id: str): function get_cron_description (line 32) | def get_cron_description(cron_expression: str) -> str: FILE: rocky/reports/utils.py function debug_json_keys (line 11) | def debug_json_keys(data: dict, path: list) -> None: class JSONEncoder (line 19) | class JSONEncoder(DjangoJSONEncoder): method default (line 20) | def default(self, o): FILE: rocky/reports/views/aggregate_report.py class BreadcrumbsAggregateReportView (line 27) | class BreadcrumbsAggregateReportView(ReportBreadcrumbs): method build_breadcrumbs (line 28) | def build_breadcrumbs(self) -> list[Breadcrumb]: class LandingAggregateReportView (line 46) | class LandingAggregateReportView(BreadcrumbsAggregateReportView): method get (line 51) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Http... class OOISelectionAggregateReportView (line 58) | class OOISelectionAggregateReportView(AggregateReportStepsMixin, Breadcr... method get_context_data (line 68) | def get_context_data(self, **kwargs): class ReportTypesSelectionAggregateReportView (line 74) | class ReportTypesSelectionAggregateReportView( class SetupScanAggregateReportView (line 88) | class SetupScanAggregateReportView( class ExportSetupAggregateReportView (line 101) | class ExportSetupAggregateReportView( method post (line 113) | def post(self, request, *args, **kwargs): class SaveAggregateReportView (line 135) | class SaveAggregateReportView(SaveAggregateReportMixin, BreadcrumbsAggre... FILE: rocky/reports/views/base.py function get_selection (line 50) | def get_selection(request: HttpRequest, pre_selection: Mapping[str, str ... class ReportBreadcrumbs (line 59) | class ReportBreadcrumbs(OrganizationView, BreadcrumbsMixin): method setup (line 62) | def setup(self, request, *args, **kwargs): method get_kwargs (line 66) | def get_kwargs(self): method is_valid_breadcrumbs (line 69) | def is_valid_breadcrumbs(self): method build_breadcrumbs (line 72) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_breadcrumbs (line 78) | def get_breadcrumbs(self): method get_current (line 83) | def get_current(self): method get_previous (line 86) | def get_previous(self): method get_next (line 91) | def get_next(self): method get_context_data (line 96) | def get_context_data(self, **kwargs): class ReportsLandingView (line 104) | class ReportsLandingView(ReportBreadcrumbs, TemplateView): method get (line 109) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Http... function hydrate_plugins (line 113) | def hydrate_plugins(report_types: list[type["BaseReport"]], katalogus: K... function format_plugin_data (line 129) | def format_plugin_data(report_type_plugins: dict[str, list[Plugin]]): class BaseReportView (line 144) | class BaseReportView(OOIFilterView, ReportBreadcrumbs): method setup (line 155) | def setup(self, request, *args, **kwargs): method get_ooi_selection (line 160) | def get_ooi_selection(self) -> list[str]: method all_oois_selected (line 163) | def all_oois_selected(self) -> bool: method get_ooi_pks (line 166) | def get_ooi_pks(self) -> list[str]: method get_total_oois (line 171) | def get_total_oois(self): method get_report_ooi_types (line 174) | def get_report_ooi_types(self) -> set[type[OOI]]: method get_ooi_types (line 181) | def get_ooi_types(self) -> set[type[OOI]]: method get_oois (line 187) | def get_oois(self) -> list[OOI]: method get_ooi_filter_forms (line 203) | def get_ooi_filter_forms(self) -> dict[str, Form]: method get_report_type_ids (line 210) | def get_report_type_ids(self) -> list[str]: method get_report_types (line 213) | def get_report_types(self) -> list[type[BaseReport]]: method get_report_types_from_ooi_selelection (line 217) | def get_report_types_from_ooi_selelection( method get_report_types_for_generate_report (line 234) | def get_report_types_for_generate_report(self): method get_report_types_for_aggregate_report (line 242) | def get_report_types_for_aggregate_report(self) -> dict[str, list[dict... method get_available_report_types (line 250) | def get_available_report_types(self) -> tuple[list[dict[str, str]] | d... method get_observed_at (line 266) | def get_observed_at(self): method is_single_report (line 269) | def is_single_report(self) -> bool: method get_input_recipe (line 272) | def get_input_recipe(self): method create_report_recipe (line 291) | def create_report_recipe( method get_input_data (line 312) | def get_input_data(self) -> dict[str, Any]: method get_initial_report_name (line 321) | def get_initial_report_name(self) -> str: method get_parent_report_type (line 324) | def get_parent_report_type(self): method get_context_data (line 329) | def get_context_data(self, **kwargs): class OOISelectionView (line 341) | class OOISelectionView(BaseReportView, BaseOOIListView): method setup (line 346) | def setup(self, request, *args, **kwargs): method post (line 353) | def post(self, request, *args, **kwargs): method get_context_data (line 358) | def get_context_data(self, **kwargs): class ReportTypeSelectionView (line 364) | class ReportTypeSelectionView(BaseReportView, TemplateView): method setup (line 369) | def setup(self, request, *args, **kwargs): method post (line 374) | def post(self, request, *args, **kwargs): method get_context_data (line 379) | def get_context_data(self, **kwargs): method all_oois_selected (line 392) | def all_oois_selected(self) -> bool: class ReportPluginView (line 396) | class ReportPluginView(BaseReportView, TemplateView): method setup (line 401) | def setup(self, request, *args, **kwargs): method post (line 410) | def post(self, request, *args, **kwargs): method all_plugins_enabled (line 427) | def all_plugins_enabled(self) -> bool: method plugins_enabled (line 430) | def plugins_enabled(self) -> dict[str, bool]: method get_plugins_data (line 439) | def get_plugins_data(self): method get_context_data (line 484) | def get_context_data(self, **kwargs): class ReportFinalSettingsView (line 492) | class ReportFinalSettingsView(BaseReportView, SchedulerView, TemplateView): method post (line 496) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... method get_context_data (line 502) | def get_context_data(self, **kwargs): class SaveReportView (line 509) | class SaveReportView(BaseReportView, SchedulerView, FormView): method form_invalid (line 513) | def form_invalid(self, form): method form_valid (line 521) | def form_valid(self, form): class ViewReportView (line 542) | class ViewReportView(ObservedAtMixin, OrganizationView, TemplateView, Ad... method setup (line 550) | def setup(self, request, *args, **kwargs): method post (line 557) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... method get (line 560) | def get(self, request, *args, **kwargs): method custom_observed_at (line 584) | def custom_observed_at(self): method get_report_ooi (line 591) | def get_report_ooi(self) -> ReportOOI: method get_recipe_ooi (line 600) | def get_recipe_ooi(self, recipe_id: str) -> ReportRecipe | None: method get_template_names (line 603) | def get_template_names(self): method get_asset_reports (line 612) | def get_asset_reports(self) -> list[AssetReport]: method get_input_oois (line 619) | def get_input_oois(self, ooi_pks: list[str]) -> list[OOIType]: method get_plugins (line 626) | def get_plugins(self, plugins_dict: dict[str, list[str]]) -> list[dict... method get_report_types (line 644) | def get_report_types(self, report_type_ids: Iterable[str]) -> list[dic... method get_report_data_from_bytes (line 657) | def get_report_data_from_bytes(self, reports: list[ReportOOI]) -> list... method get_report_data_single_report (line 663) | def get_report_data_single_report( method get_report_data_aggregate_report_or_multi_report (line 685) | def get_report_data_aggregate_report_or_multi_report( method get_report_data_concatenated_report (line 700) | def get_report_data_concatenated_report( method get_report_data (line 727) | def get_report_data(self): method get_context_data (line 735) | def get_context_data(self, **kwargs): class ViewReportPDFView (line 755) | class ViewReportPDFView(ViewReportView, WeasyTemplateResponseMixin): method get_template_names (line 760) | def get_template_names(self): FILE: rocky/reports/views/generate_report.py class BreadcrumbsGenerateReportView (line 26) | class BreadcrumbsGenerateReportView(ReportBreadcrumbs): method build_breadcrumbs (line 27) | def build_breadcrumbs(self) -> list[Breadcrumb]: class LandingGenerateReportView (line 45) | class LandingGenerateReportView(BreadcrumbsGenerateReportView): method get (line 50) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Http... class OOISelectionGenerateReportView (line 57) | class OOISelectionGenerateReportView(GenerateReportStepsMixin, Breadcrum... method get_context_data (line 66) | def get_context_data(self, **kwargs): class ReportTypesSelectionGenerateReportView (line 72) | class ReportTypesSelectionGenerateReportView( class SetupScanGenerateReportView (line 85) | class SetupScanGenerateReportView( class ExportSetupGenerateReportView (line 97) | class ExportSetupGenerateReportView(GenerateReportStepsMixin, Breadcrumb... method post (line 106) | def post(self, request, *args, **kwargs): class SaveGenerateReportView (line 127) | class SaveGenerateReportView(SaveGenerateReportMixin, BreadcrumbsGenerat... FILE: rocky/reports/views/mixins.py class SaveGenerateReportMixin (line 21) | class SaveGenerateReportMixin(BaseReportView): method save_report (line 22) | def save_report(self, report_names: list) -> Report | None: # TODO: f... class SaveAggregateReportMixin (line 53) | class SaveAggregateReportMixin(BaseReportView): method save_report (line 54) | def save_report(self, report_names: list) -> Report | None: class SaveMultiReportMixin (line 87) | class SaveMultiReportMixin(BaseReportView): method save_report (line 88) | def save_report(self, report_names: list) -> Report: FILE: rocky/reports/views/multi_report.py class BreadcrumbsMultiReportView (line 24) | class BreadcrumbsMultiReportView(ReportBreadcrumbs): method build_breadcrumbs (line 25) | def build_breadcrumbs(self) -> list[Breadcrumb]: class LandingMultiReportView (line 43) | class LandingMultiReportView(BreadcrumbsMultiReportView): method get (line 48) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Http... class OOISelectionMultiReportView (line 52) | class OOISelectionMultiReportView(MultiReportStepsMixin, BreadcrumbsMult... class ReportTypesSelectionMultiReportView (line 63) | class ReportTypesSelectionMultiReportView( class SetupScanMultiReportView (line 77) | class SetupScanMultiReportView(MultiReportStepsMixin, BreadcrumbsMultiRe... class ExportSetupMultiReportView (line 88) | class ExportSetupMultiReportView(MultiReportStepsMixin, BreadcrumbsMulti... class MultiReportView (line 99) | class MultiReportView(SaveMultiReportMixin, BreadcrumbsMultiReportView, ... FILE: rocky/reports/views/report_overview.py class BreadcrumbsReportOverviewView (line 29) | class BreadcrumbsReportOverviewView(ReportBreadcrumbs): method build_breadcrumbs (line 30) | def build_breadcrumbs(self): class ScheduledReportsView (line 38) | class ScheduledReportsView(BreadcrumbsReportOverviewView, SchedulerView,... method get_recipe_ooi (line 50) | def get_recipe_ooi(self, recipe_id: str) -> ReportRecipe | None: method get_reports (line 58) | def get_reports(self, recipe_id: str) -> list[HydratedReport]: method get_queryset (line 66) | def get_queryset(self) -> list[dict[str, Any]]: method post (line 106) | def post(self, request, *args, **kwargs): method get_context_data (line 135) | def get_context_data(self, **kwargs): class ScheduledReportsEnableDisableView (line 142) | class ScheduledReportsEnableDisableView( method get_queryset (line 153) | def get_queryset(self) -> ReportList: method post (line 156) | def post(self, request, *args, **kwargs) -> HttpResponse: class ReportHistoryView (line 187) | class ReportHistoryView(BreadcrumbsReportOverviewView, SchedulerView, Oc... method post (line 198) | def post(self, request, *args, **kwargs): method get_queryset (line 213) | def get_queryset(self) -> ReportList: method get_report_ooi (line 216) | def get_report_ooi(self, ooi_pk: str) -> HydratedReport: method run_bulk_actions (line 219) | def run_bulk_actions(self) -> None: method delete_reports (line 232) | def delete_reports(self, report_references: list[Reference]) -> None: method rerun_reports (line 246) | def rerun_reports(self, report_references: list[str]) -> None: method get_input_data (line 280) | def get_input_data(self, report_ooi: Report) -> dict[str, Any]: method get_input_oois (line 293) | def get_input_oois(self, ooi_pks: list[str]) -> list[OOI]: method rerun_report (line 298) | def rerun_report(self, report_ooi: Report | AssetReport) -> bool: method rename_reports (line 311) | def rename_reports(self, report_references: list[str]) -> None: method get_context_data (line 335) | def get_context_data(self, **kwargs): class SubreportView (line 343) | class SubreportView(BreadcrumbsReportOverviewView, OctopoesView, ListView): method setup (line 354) | def setup(self, request, *args, **kwargs): method get_queryset (line 358) | def get_queryset(self) -> ReportList: method get_report_ooi (line 361) | def get_report_ooi(self, ooi_pk: str) -> HydratedReport: method get_context_data (line 364) | def get_context_data(self, **kwargs): FILE: rocky/reports/views/view_helpers.py class GenerateReportStepsMixin (line 9) | class GenerateReportStepsMixin(StepsMixin): method build_steps (line 12) | def build_steps(self): class AggregateReportStepsMixin (line 43) | class AggregateReportStepsMixin(StepsMixin): method build_steps (line 46) | def build_steps(self): class MultiReportStepsMixin (line 79) | class MultiReportStepsMixin(StepsMixin): method build_steps (line 82) | def build_steps(self, **kwargs): FILE: rocky/reports/viewsets.py class ReportViewSet (line 26) | class ReportViewSet(OrganizationAPIMixin, viewsets.ReadOnlyModelViewSet): method get_queryset (line 33) | def get_queryset(self): method get_object (line 36) | def get_object(self): method pdf (line 45) | def pdf(self, request, pk): class ReportRecipeViewSet (line 58) | class ReportRecipeViewSet(OrganizationAPIMixin, viewsets.ModelViewSet): method list (line 62) | def list(self, request, *args, **kwargs) -> Response: method get_queryset (line 78) | def get_queryset(self): method get_object (line 81) | def get_object(self) -> ReportRecipe: method get_schedule_id (line 93) | def get_schedule_id(self, pk: str) -> str | None: method perform_create (line 103) | def perform_create(self, serializer: ReportRecipeSerializer) -> None: method perform_update (line 163) | def perform_update(self, serializer: ReportRecipeSerializer) -> None: method perform_destroy (line 185) | def perform_destroy(self, instance: ReportRecipe) -> None: FILE: rocky/rocky/apps.py class RockyConfig (line 4) | class RockyConfig(AppConfig): method ready (line 7) | def ready(self): FILE: rocky/rocky/auth/remote_user.py class RemoteUserBackend (line 10) | class RemoteUserBackend(BaseRemoteUserBackend): method configure_user (line 15) | def configure_user(self, request, user, created=True): FILE: rocky/rocky/bytes_client.py class NoAuth (line 20) | class NoAuth(httpx.Auth): method auth_flow (line 21) | def auth_flow(self, request): class TokenAuth (line 25) | class TokenAuth(httpx.Auth): method __init__ (line 26) | def __init__(self, client: "BytesClient"): method auth_flow (line 29) | def auth_flow(self, request: httpx.Request) -> Generator[httpx.Request... class BytesClient (line 46) | class BytesClient: method __init__ (line 50) | def __init__(self, base_url: str, username: str, password: str, organi... method health (line 57) | def health(self) -> ServiceHealth: method raw_from_declarations (line 64) | def raw_from_declarations(declarations: list[Declaration]) -> bytes: method add_manual_proof (line 67) | def add_manual_proof( method upload_raw (line 100) | def upload_raw( method _save_boefje_meta (line 125) | def _save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: method _save_normalizer_meta (line 131) | def _save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: method _save_raw (line 140) | def _save_raw(self, boefje_meta_id: uuid.UUID, raw: bytes, mime_types:... method get_raw (line 153) | def get_raw(self, raw_id: str) -> bytes: method get_raws (line 161) | def get_raws(self, organization_code: str, raw_ids: list[uuid.UUID | s... method get_raws_all (line 173) | def get_raws_all(self, raw_ids: list[str]) -> dict[str, dict[str, Any]]: method get_raw_metas (line 186) | def get_raw_metas(self, boefje_meta_id: uuid.UUID, organization_code: ... method get_normalizer_meta (line 205) | def get_normalizer_meta(self, normalizer_meta_id: uuid.UUID) -> dict: method get_normalizer_metas (line 213) | def get_normalizer_metas(self, normalizer_metas: Sequence[uuid.UUID | ... method token (line 226) | def token(self) -> str: method _invalidate_token (line 229) | def _invalidate_token(self): method _get_token (line 233) | def _get_token(self) -> str: function get_bytes_client (line 245) | def get_bytes_client(organization: str | None) -> BytesClient: FILE: rocky/rocky/exceptions.py class RockyError (line 4) | class RockyError(Exception): class IndemnificationNotPresentException (line 8) | class IndemnificationNotPresentException(Exception): class ClearanceLevelTooLowException (line 12) | class ClearanceLevelTooLowException(Exception): class AcknowledgedClearanceLevelTooLowException (line 16) | class AcknowledgedClearanceLevelTooLowException(ClearanceLevelTooLowExce... class TrustedClearanceLevelTooLowException (line 20) | class TrustedClearanceLevelTooLowException(ClearanceLevelTooLowException): class ServiceException (line 24) | class ServiceException(RockyError): method __init__ (line 27) | def __init__(self, service_name: str, *args: Any): class OctopoesException (line 32) | class OctopoesException(ServiceException): method __init__ (line 33) | def __init__(self, *args: Any): class OctopoesDownException (line 37) | class OctopoesDownException(OctopoesException): class OctopoesUnhealthyException (line 41) | class OctopoesUnhealthyException(OctopoesException): FILE: rocky/rocky/forms.py class MemberFilterForm (line 6) | class MemberFilterForm(BaseRockyForm): method clean_status (line 21) | def clean_status(self): method clean_blocked (line 25) | def clean_blocked(self): FILE: rocky/rocky/health.py class ServiceHealth (line 6) | class ServiceHealth(BaseModel): FILE: rocky/rocky/messaging.py function clearance_level_warning_dns_report (line 6) | def clearance_level_warning_dns_report(request, trusted_clearance_level): FILE: rocky/rocky/middleware/auth_required.py function AuthRequiredMiddleware (line 8) | def AuthRequiredMiddleware(get_response): FILE: rocky/rocky/middleware/onboarding.py function OnboardingMiddleware (line 7) | def OnboardingMiddleware(get_response): FILE: rocky/rocky/middleware/otel.py class OTELInstrumentTemplateMiddleware (line 6) | class OTELInstrumentTemplateMiddleware: method __init__ (line 11) | def __init__(self, get_response): method __call__ (line 14) | def __call__(self, request): method process_template_response (line 17) | def process_template_response(self, request, response): FILE: rocky/rocky/middleware/remote_user.py class RemoteUserMiddleware (line 5) | class RemoteUserMiddleware(BaseRemoteUserMiddleware): FILE: rocky/rocky/otel.py class OpenTelemetryHelper (line 14) | class OpenTelemetryHelper: method setup_instrumentation (line 20) | def setup_instrumentation(span_export_grpc_endpoint): FILE: rocky/rocky/paginator.py class RockyPaginator (line 9) | class RockyPaginator(Paginator): method __init__ (line 10) | def __init__(self, object_list, per_page, orphans, allow_empty_first_p... method num_pages (line 17) | def num_pages(self) -> int: method count (line 24) | def count(self): method validate_number (line 28) | def validate_number(self, number: Any) -> int: method get_page (line 40) | def get_page(self, number): method page (line 47) | def page(self, number: Any) -> Page: FILE: rocky/rocky/permissions.py class KATModelPermissions (line 4) | class KATModelPermissions(DjangoModelPermissions): FILE: rocky/rocky/scheduler.py class Boefje (line 21) | class Boefje(BaseModel): class BoefjeMeta (line 30) | class BoefjeMeta(BaseModel): class RawData (line 42) | class RawData(BaseModel): class Normalizer (line 50) | class Normalizer(BaseModel): class NormalizerMeta (line 58) | class NormalizerMeta(BaseModel): class NormalizerTask (line 66) | class NormalizerTask(BaseModel): class BoefjeTask (line 76) | class BoefjeTask(BaseModel): class ReportTask (line 88) | class ReportTask(BaseModel): class TaskStatus (line 97) | class TaskStatus(Enum): class Task (line 121) | class Task(BaseModel): method organization_id (line 136) | def organization_id(self) -> str: class TaskPush (line 149) | class TaskPush(BaseModel): class ScheduleRequest (line 157) | class ScheduleRequest(BaseModel): class ScheduleResponse (line 167) | class ScheduleResponse(BaseModel): class SchedulerResponse (line 182) | class SchedulerResponse(BaseModel): class SchedulerNoResponse (line 189) | class SchedulerNoResponse(BaseModel): class Queue (line 193) | class Queue(BaseModel): class PaginatedTasksResponse (line 198) | class PaginatedTasksResponse(BaseModel): class TaskPop (line 205) | class TaskPop(BaseModel): class PaginatedSchedulesResponse (line 209) | class PaginatedSchedulesResponse(BaseModel): class LazyTaskList (line 216) | class LazyTaskList: method __init__ (line 219) | def __init__(self, scheduler_client: SchedulerClient, **kwargs: Any): method count (line 225) | def count(self) -> int: method __len__ (line 230) | def __len__(self): method __getitem__ (line 233) | def __getitem__(self, key: slice | int) -> list[Task]: class SchedulerError (line 252) | class SchedulerError(Exception): method __init__ (line 255) | def __init__(self, *args: object, extra_message: str | None = None) ->... method __str__ (line 260) | def __str__(self) -> str: class SchedulerConnectError (line 264) | class SchedulerConnectError(SchedulerError): class SchedulerValidationError (line 268) | class SchedulerValidationError(SchedulerError): class SchedulerTaskNotFound (line 272) | class SchedulerTaskNotFound(SchedulerError): class SchedulerTooManyRequestError (line 276) | class SchedulerTooManyRequestError(SchedulerError): class SchedulerBadRequestError (line 280) | class SchedulerBadRequestError(SchedulerError): class SchedulerConflictError (line 284) | class SchedulerConflictError(SchedulerError): class SchedulerHTTPError (line 288) | class SchedulerHTTPError(SchedulerError): class SchedulerClient (line 292) | class SchedulerClient: method __init__ (line 293) | def __init__(self, base_uri: str, organization_code: str | None): method list_schedules (line 297) | def list_schedules(self, **kwargs) -> PaginatedSchedulesResponse: method get_schedule_details (line 308) | def get_schedule_details(self, schedule_id: str) -> ScheduleResponse: method post_schedule_search (line 316) | def post_schedule_search(self, filters: dict[str, list[dict[str, Any]]... method patch_schedule (line 325) | def patch_schedule(self, schedule_id: str, params: dict[str, Any]) -> ... method post_schedule (line 333) | def post_schedule(self, schedule: ScheduleRequest) -> ScheduleResponse: method delete_schedule (line 348) | def delete_schedule(self, schedule_id: str) -> None: method list_tasks (line 356) | def list_tasks(self, **kwargs) -> PaginatedTasksResponse: method get_task_details (line 368) | def get_task_details(self, task_id: str) -> Task: method push_task (line 375) | def push_task(self, item: Task) -> None: method get_queues (line 392) | def get_queues(self) -> list[Queue]: method pop_item (line 398) | def pop_item(self, scheduler_id: str) -> Task | None: method pop_items (line 408) | def pop_items(self, scheduler_id: str, filters: dict[str, Any]) -> Tas... method patch_task (line 413) | def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: method health (line 417) | def health(self) -> ServiceHealth: method _get_task_stats (line 420) | def _get_task_stats(self, scheduler_id: str, organization_ids: list[st... method get_task_stats (line 430) | def get_task_stats(self, task_type: str) -> dict: method get_combined_schedulers_stats (line 436) | def get_combined_schedulers_stats(self, scheduler_id: str, organizatio... method _get (line 440) | def _get(self, path: str, params: dict | None = None, return_type: str... method get_scheduled_reports (line 454) | def get_scheduled_reports(self) -> list[dict[str, Any]]: function scheduler_client (line 470) | def scheduler_client(organization_code: str | None) -> SchedulerClient: FILE: rocky/rocky/settings.py class SaferExceptionReporterFilter (line 56) | class SaferExceptionReporterFilter(SafeExceptionReporterFilter): function configure_logging (line 80) | def configure_logging(logging_settings): FILE: rocky/rocky/signals.py function user_logged_in_callback (line 31) | def user_logged_in_callback(sender, request, user, **kwargs): function user_logged_out_callback (line 37) | def user_logged_out_callback(sender, request, user, **kwargs): function user_login_failed_callback (line 43) | def user_login_failed_callback(sender, credentials, request, **kwargs): function log_save (line 49) | def log_save(sender, instance, created, **kwargs) -> None: function log_delete (line 84) | def log_delete(sender, instance, **kwargs) -> None: function save_log (line 99) | def save_log(instance, event_code): function delete_log (line 110) | def delete_log(instance, event_code): function log_save_session (line 122) | def log_save_session(sender, instance, created, **kwargs) -> None: function log_delete_session (line 127) | def log_delete_session(sender, instance, *args, **kwargs) -> None: function log_update_device (line 132) | def log_update_device(sender, instance, created, **kwargs) -> None: function log_delete_device (line 138) | def log_delete_device(sender, instance, *args, **kwargs) -> None: function organization_pre_save (line 143) | def organization_pre_save(sender, instance, *args, **kwargs): function organization_post_save (line 167) | def organization_post_save(sender, instance, created, *args, **kwargs): function _get_healthy_katalogus (line 181) | def _get_healthy_katalogus() -> KATalogusClient: function _get_healthy_octopoes (line 195) | def _get_healthy_octopoes(organization_code: str) -> OctopoesAPIConnector: FILE: rocky/rocky/templatetags/rocky.py function is_multiple_hidden (line 7) | def is_multiple_hidden(field): FILE: rocky/rocky/views/bytes_raw.py class BytesRawView (line 21) | class BytesRawView(OrganizationView): method get (line 22) | def get(self, request, **kwargs): function zip_data (line 62) | def zip_data(raws: dict[str, bytes], raw_metas: list[dict]) -> BytesIO: FILE: rocky/rocky/views/finding_add.py function get_finding_type_from_id (line 37) | def get_finding_type_from_id(finding_type_id: str) -> FindingType: class FindingAddView (line 47) | class FindingAddView(BaseOOIFormView): method setup (line 51) | def setup(self, request, *args, **kwargs): method get_context_data (line 55) | def get_context_data(self, **kwargs): method get_form_kwargs (line 68) | def get_form_kwargs(self): method get_form (line 77) | def get_form(self, form_class: type[Form] | None = None) -> FindingAdd... method form_valid (line 83) | def form_valid(self, form): method get_ooi_options (line 122) | def get_ooi_options(self) -> list[tuple[str, str]]: FILE: rocky/rocky/views/finding_list.py function sort_by_severity_desc (line 34) | def sort_by_severity_desc(findings: Iterable) -> list[dict[str, Any]]: function generate_findings_metadata (line 45) | def generate_findings_metadata( class PageActions (line 67) | class PageActions(Enum): class FindingListFilter (line 71) | class FindingListFilter(OctopoesView, SeveritiesMixin, ListView): method setup (line 72) | def setup(self, request, *args, **kwargs): method count_active_filters (line 83) | def count_active_filters(self): method get_queryset (line 91) | def get_queryset(self) -> FindingList: method get_queryset_params (line 94) | def get_queryset_params(self): method order_by (line 106) | def order_by(self) -> Literal["score", "finding_type"]: method sorting_order (line 110) | def sorting_order(self) -> Literal["asc", "desc"]: method get_context_data (line 113) | def get_context_data(self, **kwargs): class FindingListView (line 132) | class FindingListView(BreadcrumbsMixin, FindingListFilter, AddDashboardI... method build_breadcrumbs (line 138) | def build_breadcrumbs(self) -> list[Breadcrumb]: method post (line 146) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... FILE: rocky/rocky/views/finding_type_add.py class FindingTypeAddView (line 18) | class FindingTypeAddView(OrganizationView, FormView): method get_context_data (line 22) | def get_context_data(self, **kwargs): method form_valid (line 38) | def form_valid(self, form): FILE: rocky/rocky/views/handler403.py function handler403 (line 4) | def handler403(request, exception): FILE: rocky/rocky/views/handler404.py function handler404 (line 4) | def handler404(request, exception): FILE: rocky/rocky/views/health.py class Health (line 21) | class Health(OrganizationView, View): method get (line 22) | def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Json... function get_bytes_health (line 28) | def get_bytes_health() -> ServiceHealth: function get_octopoes_health (line 39) | def get_octopoes_health(octopoes_api_connector: OctopoesAPIConnector) ->... function get_scheduler_health (line 51) | def get_scheduler_health(organization_code: str) -> ServiceHealth: function get_rocky_health (line 62) | def get_rocky_health(organization_code: str, octopoes_api_connector: Oct... function flatten_health (line 80) | def flatten_health(health_: ServiceHealth) -> list[ServiceHealth]: class HealthChecks (line 88) | class HealthChecks(OrganizationView, TemplateView): method get_context_data (line 91) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/indemnification_add.py class IndemnificationAddView (line 11) | class IndemnificationAddView(OrganizationPermissionRequiredMixin, Organi... method post (line 16) | def post(self, request, *args, **kwargs): method get_success_url (line 21) | def get_success_url(self) -> str: method add_success_notification (line 24) | def add_success_notification(self): method get_context_data (line 28) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/landing_page.py class LandingPageView (line 5) | class LandingPageView(TemplateView): method get (line 8) | def get(self, request, *args, **kwargs): FILE: rocky/rocky/views/mixins.py class HydratedFinding (line 65) | class HydratedFinding: class OriginData (line 71) | class OriginData(BaseModel): method is_old (line 78) | def is_old(self) -> bool: method is_older_than (line 81) | def is_older_than(self, time_delta: timedelta) -> bool: class Origins (line 93) | class Origins(TypedDict): class OOIAttributeError (line 99) | class OOIAttributeError(AttributeError): class ObservedAtMixin (line 103) | class ObservedAtMixin(ContextMixin, View): method is_historic_view (line 107) | def is_historic_view(self) -> bool: method observed_at (line 111) | def observed_at(self) -> datetime: method get_connector_form_kwargs (line 134) | def get_connector_form_kwargs(self) -> dict: method get_connector_form (line 140) | def get_connector_form(self) -> ObservedAtForm: method get_context_data (line 143) | def get_context_data(self, **kwargs): method count_observed_at_filter (line 150) | def count_observed_at_filter(self) -> int: class OctopoesView (line 154) | class OctopoesView(ObservedAtMixin, OrganizationView): method get_single_ooi (line 157) | def get_single_ooi(self, pk: str) -> OOI: method get_origins (line 168) | def get_origins(self, reference: Reference) -> Origins: method handle_connector_exception (line 226) | def handle_connector_exception(self, exception: Exception) -> None: method get_scan_profile_inheritance (line 232) | def get_scan_profile_inheritance(self, ooi: OOI) -> list[InheritanceSe... method get_context_data (line 235) | def get_context_data(self, **kwargs): class OOIList (line 239) | class OOIList: method __init__ (line 242) | def __init__( method count (line 266) | def count(self) -> int: method __len__ (line 280) | def __len__(self): method __getitem__ (line 283) | def __getitem__(self, key: int | slice) -> list[OOI]: class FindingList (line 321) | class FindingList: method __init__ (line 324) | def __init__( method count (line 348) | def count(self) -> int: method __len__ (line 360) | def __len__(self): method __getitem__ (line 363) | def __getitem__(self, key: int | slice) -> list[HydratedFinding]: class EnrichedReport (line 401) | class EnrichedReport: class ReportList (line 410) | class ReportList: method __init__ (line 413) | def __init__(self, octopoes_connector: OctopoesAPIConnector, valid_tim... method count (line 430) | def count(self) -> int: method __len__ (line 435) | def __len__(self): method __getitem__ (line 438) | def __getitem__(self, key: int | slice) -> Sequence[EnrichedReport | t... method enriched_report_list (line 454) | def enriched_report_list(self, reports: list[HydratedReport]) -> list[... method report_type_summary (line 481) | def report_type_summary(reports: list[AssetReport]) -> dict[str, int]: class SingleOOIMixin (line 494) | class SingleOOIMixin(OctopoesView): method get_ooi_id (line 497) | def get_ooi_id(self) -> str: method get_ooi (line 503) | def get_ooi(self, pk: str | None = None) -> OOI: method get_breadcrumb_list (line 509) | def get_breadcrumb_list(self): method get_ooi_properties (line 525) | def get_ooi_properties(self, ooi: OOI) -> dict: class SingleOOITreeMixin (line 548) | class SingleOOITreeMixin(SingleOOIMixin): method tree (line 550) | def tree(self) -> ReferenceTree: method get_depth (line 553) | def get_depth(self): method get_ooi_tree (line 559) | def get_ooi_tree( class SeveritiesMixin (line 590) | class SeveritiesMixin: method get_severities (line 593) | def get_severities(self) -> set[RiskLevelSeverity]: class AddDashboardItemFormMixin (line 604) | class AddDashboardItemFormMixin(FormMixin): method get_form_class (line 611) | def get_form_class(self): method get_form_kwargs (line 617) | def get_form_kwargs(self): method get_initial (line 622) | def get_initial(self): method add_to_dashboard (line 630) | def add_to_dashboard(self) -> HttpResponse: method get_context_data (line 651) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_add.py function ooi_type_input_choices (line 24) | def ooi_type_input_choices(): class OOIAddTypeSelectView (line 30) | class OOIAddTypeSelectView(OrganizationView, TemplateView): method get (line 33) | def get(self, request, *args, **kwargs): method get_context_data (line 44) | def get_context_data(self, **kwargs): class OOIAddView (line 59) | class OOIAddView(BaseOOIFormView): method setup (line 62) | def setup(self, request, *args, **kwargs): method get_ooi_class (line 67) | def get_ooi_class(self) -> type[OOI]: method get_form_kwargs (line 76) | def get_form_kwargs(self): method get_context_data (line 82) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_delete.py class OOIDeleteView (line 13) | class OOIDeleteView(OrganizationPermissionRequiredMixin, SingleOOIMixin,... method setup (line 17) | def setup(self, request, *args, **kwargs): method delete (line 21) | def delete(self, request): method post (line 26) | def post(self, request, **kwargs): method get_success_url (line 29) | def get_success_url(self): method get_context_data (line 32) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_detail.py class OOIDetailView (line 20) | class OOIDetailView(BaseOOIDetailView, OOIRelatedObjectManager, OOIFindi... method post (line 25) | def post(self, request, *args, **kwargs): method set_clearance_level (line 34) | def set_clearance_level(self) -> None: method answer_ooi_questions (line 46) | def answer_ooi_questions(self) -> None: method start_boefje_scan (line 66) | def start_boefje_scan(self) -> None: method get_boefjes_filter_form (line 73) | def get_boefjes_filter_form(self): method get_boefjes_for_ooi (line 76) | def get_boefjes_for_ooi(self, boefjes: list[Boefje]) -> list[Boefje]: method get_boefjes_exceeding_ooi_clearance_level (line 86) | def get_boefjes_exceeding_ooi_clearance_level(self, boefjes: list[Boef... method get_context_data (line 99) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_detail_related_object.py class OOIRelatedObjectManager (line 16) | class OOIRelatedObjectManager(SingleOOITreeMixin): method get_related_objects (line 17) | def get_related_objects(self, observed_at): method ooi_add_url (line 33) | def ooi_add_url(self, ooi: OOI, ooi_type: str, ooi_relation: str = "oo... method get_datamodel (line 50) | def get_datamodel(self) -> dict[str, dict[str, set[type[OOI]]]]: method get_foreign_relations (line 58) | def get_foreign_relations(self, ooi_class: type[OOI]) -> list[tuple[st... method get_ooi_types_input_values (line 68) | def get_ooi_types_input_values(self, ooi: OOI) -> list[dict[str, str]]: class OOIFindingManager (line 90) | class OOIFindingManager(SingleOOITreeMixin): method get_findings (line 91) | def get_findings(self) -> list[Finding]: method count_findings_per_severity (line 100) | def count_findings_per_severity(self) -> Counter: method get_finding_details_sorted_by_score_desc (line 110) | def get_finding_details_sorted_by_score_desc(self) -> list[tuple[Findi... method get_finding_details (line 114) | def get_finding_details(self) -> list[tuple[Finding, FindingType]]: class OOIRelatedObjectAddView (line 118) | class OOIRelatedObjectAddView(OOIRelatedObjectManager, TemplateView): method get (line 121) | def get(self, request, *args, **kwargs): method get_context_data (line 145) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_edit.py class OOIEditView (line 11) | class OOIEditView(BaseOOIFormView, SchedulerView): method setup (line 15) | def setup(self, request, *args, **kwargs): method get_initial (line 20) | def get_initial(self): method get_form_kwargs (line 36) | def get_form_kwargs(self): method form_valid (line 42) | def form_valid(self, form): method get_context_data (line 61) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_findings.py class OOIFindingListView (line 10) | class OOIFindingListView(OOIFindingManager, BaseOOIDetailView, TemplateV... method build_breadcrumbs (line 14) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_last_breadcrumb (line 19) | def get_last_breadcrumb(self) -> Breadcrumb: method get_context_data (line 25) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/ooi_list.py class PageActions (line 33) | class PageActions(Enum): class OOIListView (line 39) | class OOIListView(BaseOOIListView, OctopoesView, AddDashboardItemFormMix... method get_context_data (line 44) | def get_context_data(self, **kwargs): method get (line 60) | def get(self, request: HttpRequest, *args: Any, status: int = 200, **k... method post (line 67) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... method _set_scan_profiles (line 95) | def _set_scan_profiles( method _set_oois_to_inherit (line 152) | def _set_oois_to_inherit( method _delete_oois (line 177) | def _delete_oois(self, selected_oois: list[str], request: HttpRequest,... method get_organization_indemnification (line 200) | def get_organization_indemnification(self): class OOIListExportView (line 204) | class OOIListExportView(BaseOOIListView): method get (line 205) | def get(self, request, *args, **kwargs): FILE: rocky/rocky/views/ooi_mute.py class MuteFindingView (line 17) | class MuteFindingView(OrganizationPermissionRequiredMixin, BaseOOIDetail... method get_initial (line 23) | def get_initial(self): method get_context_data (line 30) | def get_context_data(self, **kwargs): class MuteFindingsBulkView (line 37) | class MuteFindingsBulkView(OrganizationPermissionRequiredMixin, SingleOO... method post (line 41) | def post(self, request, *args, **kwargs): FILE: rocky/rocky/views/ooi_tree.py class OOITreeView (line 10) | class OOITreeView(BaseOOIDetailView, TemplateView): method __init__ (line 14) | def __init__(self): method get_tree_dict (line 18) | def get_tree_dict(self): method get_filtered_tree (line 25) | def get_filtered_tree(self, tree_dict: dict) -> dict: method count_active_filters (line 29) | def count_active_filters(self): method get_connector_form_kwargs (line 34) | def get_connector_form_kwargs(self): method build_breadcrumbs (line 43) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_last_breadcrumb (line 48) | def get_last_breadcrumb(self): method get_context_data (line 54) | def get_context_data(self, **kwargs): class OOISummaryView (line 63) | class OOISummaryView(OOITreeView): method get_last_breadcrumb (line 66) | def get_last_breadcrumb(self): class OOIGraphView (line 70) | class OOIGraphView(OOITreeView): method get_filtered_tree (line 73) | def get_filtered_tree(self, tree_dict: dict) -> dict: method get_last_breadcrumb (line 77) | def get_last_breadcrumb(self): function hydrate_tree (line 84) | def hydrate_tree(tree: dict, organization_code: str) -> dict: function hydrate_branch (line 88) | def hydrate_branch(branch: dict, organization_code: str) -> dict: FILE: rocky/rocky/views/ooi_view.py class OOIFilterView (line 26) | class OOIFilterView(OctopoesView): method setup (line 37) | def setup(self, request, *args, **kwargs): method get_active_filters (line 44) | def get_active_filters(self) -> dict[str, str]: method count_active_filters (line 60) | def count_active_filters(self) -> int: method get_ooi_scan_levels (line 69) | def get_ooi_scan_levels(self) -> set[int] | set: method get_ooi_scan_profile_types (line 74) | def get_ooi_scan_profile_types(self) -> set[ScanProfileType] | set: method get_ooi_types (line 79) | def get_ooi_types(self) -> set[type[OOI]] | set[str]: method order_by (line 85) | def order_by(self) -> Literal["object_type", "scan_level"]: method sorting_order (line 89) | def sorting_order(self) -> Literal["asc", "desc"]: method get_queryset_params (line 92) | def get_queryset_params(self): method get_context_data (line 103) | def get_context_data(self, **kwargs): class BaseOOIListView (line 121) | class BaseOOIListView(OOIFilterView, ListView): method get_queryset (line 126) | def get_queryset(self) -> OOIList: method get_context_data (line 129) | def get_context_data(self, **kwargs): class BaseOOIDetailView (line 137) | class BaseOOIDetailView(BreadcrumbsMixin, SingleOOITreeMixin): method setup (line 138) | def setup(self, request, *args, **kwargs): method get_current_ooi (line 143) | def get_current_ooi(self) -> OOI | None: method get_context_data (line 155) | def get_context_data(self, **kwargs): method build_breadcrumbs (line 163) | def build_breadcrumbs(self) -> list[Breadcrumb]: class BaseOOIFormView (line 184) | class BaseOOIFormView(SingleOOIMixin, FormView): method get_ooi_class (line 188) | def get_ooi_class(self): method get_form (line 191) | def get_form(self, form_class: type[Form] | None = None) -> BaseRockyF... method get_form_kwargs (line 201) | def get_form_kwargs(self): method form_valid (line 207) | def form_valid(self, form): method get_ooi_success_url (line 226) | def get_ooi_success_url(self, ooi: OOI) -> str: method get_readonly_fields (line 229) | def get_readonly_fields(self) -> list: FILE: rocky/rocky/views/organization_add.py class OrganizationAddView (line 16) | class OrganizationAddView(PermissionRequiredMixin, CreateView): method get_context_data (line 27) | def get_context_data(self, **kwargs): method form_valid (line 35) | def form_valid(self, form): method add_success_notification (line 60) | def add_success_notification(self): method handle_no_permission (line 64) | def handle_no_permission(self): FILE: rocky/rocky/views/organization_edit.py class OrganizationEditView (line 10) | class OrganizationEditView(OrganizationPermissionRequiredMixin, Organiza... method get_object (line 16) | def get_object(self): method get_success_url (line 19) | def get_success_url(self): method get_context_data (line 25) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/organization_list.py class OrganizationListView (line 21) | class OrganizationListView(OrganizationBreadcrumbsMixin, ListView): method get_queryset (line 24) | def get_queryset(self) -> QuerySet[Organization]: method post (line 33) | def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: FILE: rocky/rocky/views/organization_member_add.py class OrganizationMemberAddAccountTypeView (line 47) | class OrganizationMemberAddAccountTypeView( method get (line 58) | def get(self, request: HttpRequest, *args: str, **kwargs: Any) -> Http... method build_breadcrumbs (line 69) | def build_breadcrumbs(self) -> list[Breadcrumb]: class OrganizationMemberAddView (line 82) | class OrganizationMemberAddView( method get_form_kwargs (line 93) | def get_form_kwargs(self): method form_valid (line 99) | def form_valid(self, form): method add_success_notification (line 106) | def add_success_notification(self): method get_success_url (line 110) | def get_success_url(self, **kwargs): method build_breadcrumbs (line 113) | def build_breadcrumbs(self) -> list[Breadcrumb]: class DownloadMembersTemplateView (line 128) | class DownloadMembersTemplateView(OrganizationPermissionRequiredMixin, O... method get (line 131) | def get(self, request, **kwargs): class MembersUploadView (line 139) | class MembersUploadView( method get_success_url (line 150) | def get_success_url(self): method form_valid (line 153) | def form_valid(self, form): method process_csv (line 157) | def process_csv(self, form: Form) -> None: method save_models (line 207) | def save_models( method build_breadcrumbs (line 240) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_context_data (line 252) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/organization_member_edit.py class OrganizationMemberEditView (line 14) | class OrganizationMemberEditView( method test_func (line 23) | def test_func(self): method get_form (line 28) | def get_form(self): method get_success_url (line 41) | def get_success_url(self): method get_context_data (line 47) | def get_context_data(self, **kwargs): method form_valid (line 66) | def form_valid(self, form): FILE: rocky/rocky/views/organization_member_list.py class PageActions (line 20) | class PageActions(Enum): class OrganizationMemberListView (line 25) | class OrganizationMemberListView( method get_queryset (line 34) | def get_queryset(self): method post (line 43) | def post(self, request, *args, **kwargs): method handle_page_action (line 51) | def handle_page_action(self, action: str) -> None: method get_context_data (line 77) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/organization_settings.py class PageActions (line 17) | class PageActions(Enum): class OrganizationSettingsView (line 21) | class OrganizationSettingsView( method post (line 27) | def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> Htt... FILE: rocky/rocky/views/page_actions.py class PageActions (line 10) | class PageActions(Enum): class PageActionsView (line 18) | class PageActionsView(ProcessFormView): method setup (line 19) | def setup(self, request, *args, **kwargs): method post (line 28) | def post(self, request: HttpRequest, *args: str, **kwargs: Any) -> Htt... FILE: rocky/rocky/views/privacy_statement.py class PrivacyStatementView (line 6) | class PrivacyStatementView(TemplateView): method get_context_data (line 9) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/scan_profile.py class ScanProfileDetailView (line 19) | class ScanProfileDetailView(FormView, OOIDetailView): method get_context_data (line 23) | def get_context_data(self, **kwargs: Any) -> dict[str, Any]: method get_initial (line 33) | def get_initial(self): method post (line 46) | def post(self, request, *args, **kwargs): FILE: rocky/rocky/views/scans.py class ScanListView (line 7) | class ScanListView(ObjectsBreadcrumbsMixin, OrganizationView, TemplateVi... method build_breadcrumbs (line 10) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_context_data (line 17) | def get_context_data(self, **kwargs): FILE: rocky/rocky/views/scheduler.py function get_date_time (line 42) | def get_date_time(date: str | None) -> datetime | None: class UnboundSchedulerView (line 48) | class UnboundSchedulerView(UnboundOrganizationView): method setup (line 60) | def setup(self, request, *args, **kwargs): method get_task_type (line 65) | def get_task_type(self): method get_plugin_specific_tasks_for_normalizers (line 68) | def get_plugin_specific_tasks_for_normalizers(self, plugin_id) -> list... method get_plugin_specific_tasks_for_boefjes (line 76) | def get_plugin_specific_tasks_for_boefjes(self, plugin_id) -> dict[str... method get_ooi_search_specific_tasks (line 81) | def get_ooi_search_specific_tasks(self, search) -> dict[str, str]: method get_specific_tasks_by_id (line 86) | def get_specific_tasks_by_id(self, task_id) -> dict[str, str]: method get_ooi_specific_tasks (line 91) | def get_ooi_specific_tasks(self, ooi_id) -> dict[str, str]: method get_task_filter_form_data (line 104) | def get_task_filter_form_data(self) -> dict[str, Any]: method _build_task_filters (line 109) | def _build_task_filters(self, formdata: dict[str, Any], filters: dict[... method _init_filters (line 136) | def _init_filters(self, formdata: dict[str, Any]) -> dict[str, Any]: method get_task_filters (line 146) | def get_task_filters(self) -> dict[str, Any]: method count_active_task_filters (line 154) | def count_active_task_filters(self, subtract=None): method get_organization_specific_tasks (line 165) | def get_organization_specific_tasks(self, organizations: list[str] | N... method get_task_filter_form (line 170) | def get_task_filter_form(self) -> TaskFilterForm: method get_task_list (line 175) | def get_task_list(self) -> LazyTaskList | list[Any]: method get_report_schedule_form_start_date_choice (line 182) | def get_report_schedule_form_start_date_choice(self): method get_report_schedule_form_start_date_time_recurrence (line 185) | def get_report_schedule_form_start_date_time_recurrence(self): method get_report_schedule_form_recurrence_choice (line 188) | def get_report_schedule_form_recurrence_choice(self): method get_report_name_form (line 191) | def get_report_name_form(self): method get_task_details (line 194) | def get_task_details(self, task_id: str) -> Task | None: method get_task_statistics (line 204) | def get_task_statistics(self) -> dict[Any, Any]: method get_output_oois (line 211) | def get_output_oois(self, task): method get_json_task_details (line 223) | def get_json_task_details(self) -> JsonResponse: method get_schedule_details (line 237) | def get_schedule_details(self, schedule_id: str) -> ScheduleResponse: method get_schedule_with_filters (line 243) | def get_schedule_with_filters(self, filters: dict[str, list[dict[str, ... method schedule_task (line 252) | def schedule_task(self, task: TaskPush) -> None: method reschedule_task (line 272) | def reschedule_task(self, task_id: str) -> None: method convert_recurrence_to_cron_expressions (line 296) | def convert_recurrence_to_cron_expressions(self, recurrence: str, star... class SchedulerView (line 326) | class SchedulerView(UnboundSchedulerView, OctopoesView): method setup (line 329) | def setup(self, request, *args, **kwargs): method get_task_filter_form (line 333) | def get_task_filter_form(self) -> TaskFilterForm: method _init_filters (line 338) | def _init_filters(self, formdata: dict[str, Any]) -> dict[str, Any]: method create_report_schedule (line 341) | def create_report_schedule(self, report_recipe: ReportRecipe, deadline... method delete_report_schedule (line 361) | def delete_report_schedule(self, schedule_id: str) -> None: method edit_report_schedule (line 367) | def edit_report_schedule(self, schedule_id: str, params): method get_report_schedules (line 370) | def get_report_schedules(self) -> list[dict[str, Any]]: method get_task_statistics (line 377) | def get_task_statistics(self) -> dict[Any, Any]: method get_organization_specific_tasks (line 385) | def get_organization_specific_tasks(self, organizations: list[str] | N... method run_boefje (line 390) | def run_boefje(self, katalogus_boefje: Boefje, ooi: OOI | None) -> None: method run_boefje_for_oois (line 407) | def run_boefje_for_oois(self, boefje: Boefje, oois: list[OOI]) -> None: method run_normalizer (line 419) | def run_normalizer(self, katalogus_normalizer: Normalizer, raw_data: R... FILE: rocky/rocky/views/task_detail.py class DownloadTaskDetail (line 14) | class DownloadTaskDetail(SchedulerView): method get (line 15) | def get(self, request, *args, **kwargs): class TaskDetailView (line 27) | class TaskDetailView(SchedulerView, TemplateView): method get_context_data (line 28) | def get_context_data(self, **kwargs): class BoefjeTaskDetailView (line 39) | class BoefjeTaskDetailView(TaskDetailView): method get_context_data (line 42) | def get_context_data(self, **kwargs): class NormalizerTaskJSONView (line 59) | class NormalizerTaskJSONView(TaskDetailView): method get (line 64) | def get(self, request, *args, **kwargs) -> JsonResponse | HttpResponse: FILE: rocky/rocky/views/tasks.py class SchedulerListView (line 18) | class SchedulerListView(ListView): method dispatch (line 21) | def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) ->... class TaskListView (line 30) | class TaskListView(SchedulerView, SchedulerListView, PageActionsView): method get_queryset (line 35) | def get_queryset(self): method post (line 38) | def post(self, request, *args, **kwargs): method get_context_data (line 45) | def get_context_data(self, **kwargs): class OOIDetailTaskListView (line 65) | class OOIDetailTaskListView(TaskListView): class BoefjesTaskListView (line 69) | class BoefjesTaskListView(TaskListView): method get_context_data (line 73) | def get_context_data(self, **kwargs): class NormalizersTaskListView (line 85) | class NormalizersTaskListView(TaskListView): method get_context_data (line 89) | def get_context_data(self, **kwargs): class ReportsTaskListView (line 116) | class ReportsTaskListView(TaskListView): method get_context_data (line 120) | def get_context_data(self, **kwargs): class AllTaskListView (line 132) | class AllTaskListView(UnboundSchedulerView, SchedulerListView, PageActio... method get_organizations_filter (line 139) | def get_organizations_filter(self) -> dict[str, dict[str, list[dict[st... method get_queryset (line 150) | def get_queryset(self): method get_context_data (line 165) | def get_context_data(self, **kwargs): class AllBoefjesTaskListView (line 188) | class AllBoefjesTaskListView(AllTaskListView): class AllNormalizersTaskListView (line 193) | class AllNormalizersTaskListView(AllTaskListView): class AllReportsTaskListView (line 198) | class AllReportsTaskListView(AllTaskListView): FILE: rocky/rocky/views/upload_csv.py class UploadCSV (line 48) | class UploadCSV(OrganizationPermissionRequiredMixin, OrganizationView, F... method setup (line 62) | def setup(self, request, *args, **kwargs): method get_success_url (line 67) | def get_success_url(self): method get_context_data (line 70) | def get_context_data(self, **kwargs): method get_or_create_reference (line 82) | def get_or_create_reference(self, ooi_type_name: str, value: str | Non... method get_ooi_from_csv (line 103) | def get_ooi_from_csv(self, ooi_type_name: str, values: dict[str, str])... method form_valid (line 134) | def form_valid(self, form): method add_error_notification (line 139) | def add_error_notification(self, error_message): method add_success_notification (line 143) | def add_success_notification(self, success_message): method process_csv (line 147) | def process_csv(self, form): FILE: rocky/rocky/views/upload_raw.py class UploadRaw (line 17) | class UploadRaw(OrganizationPermissionRequiredMixin, OrganizationView, F... method get_initial (line 22) | def get_initial(self): method get_success_url (line 33) | def get_success_url(self): method get_context_data (line 36) | def get_context_data(self, **kwargs): method form_valid (line 47) | def form_valid(self, form): method add_error_notification (line 52) | def add_error_notification(self, error_message): method add_success_notification (line 56) | def add_success_notification(self, success_message): method process_raw (line 60) | def process_raw(self, form): method get_form_kwargs (line 85) | def get_form_kwargs(self): method get_ooi_options (line 98) | def get_ooi_options(self) -> list[tuple[str, str]]: FILE: rocky/tests/account/test_login.py function test_login_view (line 8) | def test_login_view(rf, clientuser): function test_login (line 22) | def test_login(superuser): FILE: rocky/tests/conftest.py function log_output (line 60) | def log_output(): function fixture_configure_structlog (line 65) | def fixture_configure_structlog(log_output): function valid_time (line 70) | def valid_time(): function current_language (line 75) | def current_language(request): function language (line 80) | def language(current_language): function create_user (line 86) | def create_user(django_user_model, email, password, name, device_name, s... function create_organization (line 97) | def create_organization(name, organization_code): function create_member (line 107) | def create_member(user, organization): function add_admin_group_permissions (line 121) | def add_admin_group_permissions(member): function add_redteam_group_permissions (line 144) | def add_redteam_group_permissions(member): function add_client_group_permissions (line 167) | def add_client_group_permissions(member): function seed_groups (line 176) | def seed_groups(db): function organization (line 183) | def organization(): function organization_b (line 188) | def organization_b(): function superuser (line 193) | def superuser(django_user_model): function superuser_b (line 200) | def superuser_b(django_user_model): function superuser_member (line 207) | def superuser_member(superuser, organization): function superuser_member_b (line 212) | def superuser_member_b(superuser_b, organization_b): function adminuser (line 217) | def adminuser(django_user_model): function adminuser_b (line 222) | def adminuser_b(django_user_model): function admin_member (line 227) | def admin_member(adminuser, organization): function admin_member_b (line 235) | def admin_member_b(adminuser_b, organization_b): function redteamuser (line 243) | def redteamuser(django_user_model): function redteam_member (line 250) | def redteam_member(redteamuser, organization): function clientuser (line 257) | def clientuser(django_user_model): function clientuser_b (line 262) | def clientuser_b(django_user_model): function client_member (line 269) | def client_member(clientuser, organization): function client_member_b (line 276) | def client_member_b(clientuser_b, organization_b): function client_user_two_organizations (line 283) | def client_user_two_organizations(clientuser, organization, organization... function new_member (line 292) | def new_member(django_user_model, organization): function active_member (line 301) | def active_member(django_user_model, organization): function blocked_member (line 310) | def blocked_member(django_user_model, organization): function mock_models_katalogus (line 320) | def mock_models_katalogus(mocker): function mock_bytes_client (line 325) | def mock_bytes_client(mocker): function mock_models_octopoes (line 330) | def mock_models_octopoes(mocker): function mock_organization_view_octopoes (line 335) | def mock_organization_view_octopoes(mocker): function mock_crisis_room_octopoes (line 340) | def mock_crisis_room_octopoes(mocker): function task (line 345) | def task() -> Task: function bytes_raw_metas (line 391) | def bytes_raw_metas(): function bytes_get_raw (line 420) | def bytes_get_raw(): function lazy_task_list_with_boefje (line 434) | def lazy_task_list_with_boefje(task) -> MagicMock: function network (line 442) | def network() -> Network: function url (line 450) | def url(network) -> URL: function ipaddressv4 (line 462) | def ipaddressv4(network) -> IPAddressV4: function ipaddressv6 (line 467) | def ipaddressv6(network) -> IPAddressV6: function ip_port (line 472) | def ip_port(ipaddressv4) -> IPPort: function ip_port_443 (line 477) | def ip_port_443(ipaddressv4) -> IPPort: function hostname (line 482) | def hostname(network) -> Hostname: function website (line 487) | def website(ip_service: IPService, hostname: Hostname): function security_txt (line 492) | def security_txt(website: Website, url: URL): function service (line 497) | def service() -> Service: function ip_service (line 502) | def ip_service(ip_port: IPPort, service: Service): function software (line 507) | def software() -> Software: function cve_finding_type_2023_38408 (line 512) | def cve_finding_type_2023_38408() -> CVEFindingType: function cve_finding_type_2019_8331 (line 525) | def cve_finding_type_2019_8331() -> CVEFindingType: function cve_finding_type_2019_2019 (line 537) | def cve_finding_type_2019_2019() -> CVEFindingType: function cve_finding_2023_38408 (line 551) | def cve_finding_2023_38408() -> Finding: function cve_finding_2019_8331 (line 564) | def cve_finding_2019_8331() -> Finding: function cve_finding_2019_2019 (line 577) | def cve_finding_2019_2019() -> Finding: function cve_finding_type_no_score (line 590) | def cve_finding_type_no_score() -> CVEFindingType: function cve_finding_no_score (line 600) | def cve_finding_no_score() -> Finding: function finding (line 613) | def finding() -> Finding: function web_report_finding_types (line 624) | def web_report_finding_types(): function no_rpki_finding_type (line 640) | def no_rpki_finding_type() -> KATFindingType: function invalid_rpki_finding_type (line 645) | def invalid_rpki_finding_type() -> KATFindingType: function finding_types (line 650) | def finding_types() -> list[KATFindingType]: function tree_data_no_findings (line 677) | def tree_data_no_findings(): function tree_data_findings (line 688) | def tree_data_findings(): function tree_data_dns_findings (line 723) | def tree_data_dns_findings(): function finding_type_kat_invalid_spf (line 800) | def finding_type_kat_invalid_spf() -> KATFindingType: function finding_type_kat_nameserver_no_ipv6 (line 811) | def finding_type_kat_nameserver_no_ipv6() -> KATFindingType: function finding_type_kat_no_two_ipv6 (line 822) | def finding_type_kat_no_two_ipv6() -> KATFindingType: function cipher_finding_types (line 833) | def cipher_finding_types() -> list[KATFindingType]: function cipher_finding_type (line 853) | def cipher_finding_type() -> KATFindingType: function finding_type_kat_no_spf (line 864) | def finding_type_kat_no_spf() -> KATFindingType: function finding_type_kat_no_dmarc (line 875) | def finding_type_kat_no_dmarc() -> KATFindingType: function finding_type_kat_no_dkim (line 886) | def finding_type_kat_no_dkim() -> KATFindingType: function finding_type_kat_uncommon_open_port (line 897) | def finding_type_kat_uncommon_open_port() -> KATFindingType: function finding_type_kat_open_sysadmin_port (line 908) | def finding_type_kat_open_sysadmin_port() -> KATFindingType: function finding_type_kat_open_database_port (line 919) | def finding_type_kat_open_database_port() -> KATFindingType: function finding_type_kat_no_dnssec (line 930) | def finding_type_kat_no_dnssec() -> KATFindingType: function finding_type_kat_invalid_dnssec (line 940) | def finding_type_kat_invalid_dnssec() -> KATFindingType: function cipher (line 950) | def cipher(ip_service: IPService) -> TLSCipher: function query_data_tls_findings_and_suites (line 979) | def query_data_tls_findings_and_suites(cipher): function plugin_details (line 1000) | def plugin_details(plugin_schema): function plugin_details_with_container (line 1020) | def plugin_details_with_container(plugin_schema): function plugin_schema (line 1040) | def plugin_schema(): function plugin_schema_no_required (line 1064) | def plugin_schema_no_required(): function create_asset_report (line 1112) | def create_asset_report( function create_report (line 1137) | def create_report( function report_list_one_asset_report (line 1190) | def report_list_one_asset_report(): function report_list_two_asset_reports (line 1196) | def report_list_two_asset_reports(): function report_list_six_asset_reports (line 1204) | def report_list_six_asset_reports(): function get_asset_reports (line 1211) | def get_asset_reports() -> list[tuple[str, Report]]: function report_recipe (line 1223) | def report_recipe(): function setup_request (line 1234) | def setup_request(request, user): function mock_scheduler (line 1246) | def mock_scheduler(mocker): function get_stub_path (line 1250) | def get_stub_path(file_name: str) -> Path: function get_boefjes_data (line 1254) | def get_boefjes_data() -> list[dict]: function get_normalizers_data (line 1258) | def get_normalizers_data() -> list[dict]: function get_aggregate_report_data (line 1262) | def get_aggregate_report_data(): function get_multi_report_data_minvws (line 1267) | def get_multi_report_data_minvws(): function get_multi_report_data_mispoes (line 1272) | def get_multi_report_data_mispoes(): function get_multi_report_post_processed_data (line 1277) | def get_multi_report_post_processed_data(): function get_plugins_data (line 1281) | def get_plugins_data() -> list[dict]: function mock_mixins_katalogus (line 1286) | def mock_mixins_katalogus(mocker): function mock_katalogus_client (line 1291) | def mock_katalogus_client(mocker): function mock_scheduler_client_task_list (line 1296) | def mock_scheduler_client_task_list(mock_scheduler): class MockOctopoesAPIConnector (line 1336) | class MockOctopoesAPIConnector: method __init__ (line 1341) | def __init__(self, valid_time: datetime): method get (line 1344) | def get(self, reference: Reference, valid_time: datetime | None = None... method get_tree (line 1347) | def get_tree( method query (line 1352) | def query( method query_many (line 1357) | def query_many( method get_history (line 1368) | def get_history(self, reference: Reference) -> list[TransactionRecord]: method list_origins (line 1378) | def list_origins( method list_objects (line 1388) | def list_objects( function mock_octopoes_api_connector (line 1401) | def mock_octopoes_api_connector(valid_time): function listed_hostnames (line 1406) | def listed_hostnames(network) -> list[Hostname]: function paginated_task_list (line 1419) | def paginated_task_list(task): function reports_more_input_oois (line 1424) | def reports_more_input_oois(): function rocky_health (line 1456) | def rocky_health(): function boefje_dns_records (line 1494) | def boefje_dns_records(): function boefje_nmap_tcp (line 1511) | def boefje_nmap_tcp(): function drf_admin_client (line 1528) | def drf_admin_client(create_drf_client, admin_user): function drf_redteam_client (line 1537) | def drf_redteam_client(create_drf_client, redteamuser): function get_aggregate_report_ooi (line 1546) | def get_aggregate_report_ooi(): function get_aggregate_report_from_bytes (line 1569) | def get_aggregate_report_from_bytes(): function report_data_ooi_org_a (line 1649) | def report_data_ooi_org_a(organization, get_multi_report_data_minvws): function report_data_ooi_org_b (line 1662) | def report_data_ooi_org_b(organization_b, get_multi_report_data_mispoes): function multi_report_ooi (line 1675) | def multi_report_ooi(report_data_ooi_org_a, report_data_ooi_org_b): function report_list (line 1697) | def report_list(): function get_report_input_data_from_bytes (line 1770) | def get_report_input_data_from_bytes(): function aggregate_report_with_sub_reports (line 1805) | def aggregate_report_with_sub_reports(): function reports_task_list (line 1851) | def reports_task_list(): function findings_dashboard_item (line 1892) | def findings_dashboard_item(client_member, client_member_b): function findings_reports (line 1909) | def findings_reports(client_member, client_member_b): function findings_reports_data (line 1978) | def findings_reports_data(): function findings_results (line 2170) | def findings_results(mocker, findings_dashboard_item, findings_reports, ... function expected_findings_results (line 2181) | def expected_findings_results(findings_dashboard_item, findings_reports,... function scheduled_report_recipe (line 2197) | def scheduled_report_recipe(): function scheduled_reports_list (line 2230) | def scheduled_reports_list(): function dashboard_items (line 2252) | def dashboard_items(redteam_member): function dashboard_items_from_findings_list (line 2329) | def dashboard_items_from_findings_list(redteam_member): FILE: rocky/tests/integration/conftest.py function valid_time (line 24) | def valid_time(): function katalogus_mock (line 29) | def katalogus_mock(mocker): function integration_organization (line 37) | def integration_organization(katalogus_mock, mocker, request) -> Organiz... function integration_organization_2 (line 48) | def integration_organization_2(request) -> Organization: function octopoes_api_connector (line 55) | def octopoes_api_connector(integration_organization) -> OctopoesAPIConne... function octopoes_api_connector_2 (line 64) | def octopoes_api_connector_2(integration_organization_2) -> OctopoesAPIC... function report_runner (line 73) | def report_runner(valid_time, mocker) -> LocalReportRunner: function seed_system (line 77) | def seed_system( function hostname_oois (line 235) | def hostname_oois(): FILE: rocky/tests/integration/test_bench.py function test_aggregate_report_benchmark (line 11) | def test_aggregate_report_benchmark(octopoes_api_connector, valid_time, ... FILE: rocky/tests/integration/test_report_runner.py function test_run_report_task (line 13) | def test_run_report_task(octopoes_api_connector: OctopoesAPIConnector, r... FILE: rocky/tests/integration/test_reports.py function test_web_report (line 18) | def test_web_report(octopoes_api_connector: OctopoesAPIConnector, valid_... function test_system_report (line 61) | def test_system_report(octopoes_api_connector: OctopoesAPIConnector, val... function test_aggregate_report (line 94) | def test_aggregate_report(octopoes_api_connector: OctopoesAPIConnector, ... function test_multi_report (line 231) | def test_multi_report( FILE: rocky/tests/katalogus/test_katalogus.py function test_valid_plugin_id (line 27) | def test_valid_plugin_id(): function test_valid_organization_code (line 38) | def test_valid_organization_code(): function test_katalogus_plugin_listing (line 46) | def test_katalogus_plugin_listing(request, rf, member, mocker): function test_katalogus_plugin_listing_boefjes (line 96) | def test_katalogus_plugin_listing_boefjes(request, rf, member, mocker): function test_katalogus_plugin_listing_normalizers (line 124) | def test_katalogus_plugin_listing_normalizers(request, rf, member, mocker): function test_katalogus_about_plugins (line 153) | def test_katalogus_about_plugins(request, rf, member): function test_katalogus_plugin_listing_no_enable_disable_perm (line 162) | def test_katalogus_plugin_listing_no_enable_disable_perm(rf, client_memb... function test_katalogus_settings_one_organization (line 179) | def test_katalogus_settings_one_organization(redteam_member, rf, mocker): function test_katalogus_settings_list_multiple_organization (line 200) | def test_katalogus_settings_list_multiple_organization(redteam_member, o... function test_katalogus_confirm_clone_settings (line 225) | def test_katalogus_confirm_clone_settings(redteam_member, organization_b... function test_katalogus_clone_settings (line 245) | def test_katalogus_clone_settings(redteam_member, organization_b, rf, mo... function test_katalogus_clone_settings_perm_to_organization (line 262) | def test_katalogus_clone_settings_perm_to_organization( function test_katalogus_clone_settings_not_accessible_without_perms (line 276) | def test_katalogus_clone_settings_not_accessible_without_perms( function test_katalogus_client_organization_not_exists (line 290) | def test_katalogus_client_organization_not_exists(httpx_mock): function test_katalogus_client_organization_exists (line 296) | def test_katalogus_client_organization_exists(mocker): function test_katalogus_client (line 305) | def test_katalogus_client(httpx_mock): function test_enable_disable_plugin_no_clearance (line 317) | def test_enable_disable_plugin_no_clearance(rf, redteam_member, mocker): function test_enable_disable_plugin_no_clearance_other_text (line 353) | def test_enable_disable_plugin_no_clearance_other_text(rf, redteam_membe... function test_enable_disable_plugin_has_clearance (line 389) | def test_enable_disable_plugin_has_clearance(rf, redteam_member, mocker): function test_enable_disable_normalizer (line 412) | def test_enable_disable_normalizer(rf, redteam_member, mocker): FILE: rocky/tests/katalogus/test_katalogus_boefje_setup.py function test_boefje_setup (line 7) | def test_boefje_setup(rf, superuser_member): function test_boefje_variant_setup (line 24) | def test_boefje_variant_setup(rf, superuser_member, boefje_dns_records, ... function test_edit_boefje_view (line 45) | def test_edit_boefje_view(rf, superuser_member, boefje_dns_records, mock... FILE: rocky/tests/katalogus/test_katalogus_plugin_add.py function test_plugin_settings_add_view (line 8) | def test_plugin_settings_add_view(rf, superuser_member, mock_mixins_kata... function test_plugin_settings_add_view_no_required (line 24) | def test_plugin_settings_add_view_no_required( function test_plugin_settings_add (line 42) | def test_plugin_settings_add(rf, superuser_member, mock_mixins_katalogus... function test_plugin_settings_add_no_required (line 56) | def test_plugin_settings_add_no_required( function test_plugin_settings_add_wrong_property_but_required (line 72) | def test_plugin_settings_add_wrong_property_but_required( function test_plugin_settings_add_string_too_long (line 87) | def test_plugin_settings_add_string_too_long( function test_plugin_settings_add_error_message_about_integer_for_string_type (line 102) | def test_plugin_settings_add_error_message_about_integer_for_string_type( function test_plugin_settings_add_error_message_about_integer_too_small (line 119) | def test_plugin_settings_add_error_message_about_integer_too_small( function test_plugin_settings_add_error_message_about_integer_too_big (line 136) | def test_plugin_settings_add_error_message_about_integer_too_big( function test_plugin_single_settings_add_view_no_schema (line 153) | def test_plugin_single_settings_add_view_no_schema(rf, superuser_member,... FILE: rocky/tests/katalogus/test_katalogus_plugin_delete.py function test_plugin_settings_delete_view (line 9) | def test_plugin_settings_delete_view(rf, superuser_member, mock_mixins_k... function test_plugin_settings_delete (line 26) | def test_plugin_settings_delete(rf, superuser_member, mock_mixins_katalo... function test_plugin_settings_delete_failed (line 42) | def test_plugin_settings_delete_failed( function test_plugin_settings_delete_no_settings_present (line 66) | def test_plugin_settings_delete_no_settings_present( FILE: rocky/tests/katalogus/test_katalogus_plugin_detail.py function test_plugin_detail_view (line 7) | def test_plugin_detail_view( function test_plugin_detail_view_with_container_image (line 37) | def test_plugin_detail_view_with_container_image( function test_plugin_detail_view_no_consumes (line 73) | def test_plugin_detail_view_no_consumes( FILE: rocky/tests/objects/test_objects.py function test_ooi_list (line 20) | def test_ooi_list(rf, client_member, mock_organization_view_octopoes): function test_ooi_list_with_clearance_type_filter_and_clearance_level_filter (line 39) | def test_ooi_list_with_clearance_type_filter_and_clearance_level_filter( function test_ooi_list_search (line 67) | def test_ooi_list_search(rf, client_member, mock_organization_view_octop... function test_ooi_list_delete_multiple (line 91) | def test_ooi_list_delete_multiple(rf, client_member, mock_organization_v... function test_ooi_list_delete_none (line 109) | def test_ooi_list_delete_none(rf, client_member, mock_organization_view_... function test_ooi_list_unknown_action (line 123) | def test_ooi_list_unknown_action(rf, client_member, mock_organization_vi... function test_update_scan_profile_multiple (line 137) | def test_update_scan_profile_multiple(rf, client_member, mock_organizati... function test_update_scan_profile_single (line 159) | def test_update_scan_profile_single(rf, client_member, mock_organization... function test_update_scan_profile_to_inherit (line 183) | def test_update_scan_profile_to_inherit(rf, client_member, mock_organiza... function test_update_scan_profile_to_inherit_connection_error (line 198) | def test_update_scan_profile_to_inherit_connection_error(rf, client_memb... function test_update_scan_profile_to_inherit_object_not_found (line 213) | def test_update_scan_profile_to_inherit_object_not_found(rf, client_memb... function test_update_scan_profiles_forbidden_acknowledged (line 228) | def test_update_scan_profiles_forbidden_acknowledged(rf, client_member, ... function test_update_scan_profiles_forbidden_trusted (line 258) | def test_update_scan_profiles_forbidden_trusted(rf, client_member, mock_... function test_update_scan_profiles_no_indemnification (line 277) | def test_update_scan_profiles_no_indemnification(rf, redteam_member, moc... function test_update_scan_profiles_octopoes_down (line 300) | def test_update_scan_profiles_octopoes_down(rf, client_member, mock_orga... function test_update_scan_profiles_object_not_found (line 322) | def test_update_scan_profiles_object_not_found(rf, client_member, mock_o... function test_delete_octopoes_down (line 345) | def test_delete_octopoes_down(rf, client_member, mock_organization_view_... function test_delete_object_not_found (line 367) | def test_delete_object_not_found(rf, client_member, mock_organization_vi... function test_ooi_list_export_json (line 387) | def test_ooi_list_export_json(rf, client_member, mock_organization_view_... function test_ooi_list_export_csv (line 414) | def test_ooi_list_export_csv(rf, client_member, mock_organization_view_o... function test_ooi_list_filtered_export_csv (line 439) | def test_ooi_list_filtered_export_csv(rf, client_member, mock_organizati... function test_delete_perms_object_list (line 467) | def test_delete_perms_object_list(request, member, rf, mock_organization... function test_delete_perms_object_list_clients (line 483) | def test_delete_perms_object_list_clients(rf, client_member, mock_organi... FILE: rocky/tests/objects/test_objects_add.py function test_add_ooi (line 10) | def test_add_ooi(rf, client_member, mock_organization_view_octopoes, moc... function test_add_bad_schema (line 38) | def test_add_bad_schema(rf, client_member): FILE: rocky/tests/objects/test_objects_delete.py function test_ooi_delete (line 9) | def test_ooi_delete(rf, redteam_member, mock_organization_view_octopoes,... function test_finding_delete (line 20) | def test_finding_delete(rf, redteam_member, mock_organization_view_octop... function test_delete_ooi_perms (line 32) | def test_delete_ooi_perms(request, member, rf, mock_organization_view_oc... function test_delete_ooi_perms_clients (line 44) | def test_delete_ooi_perms_clients(rf, client_member, mock_organization_v... FILE: rocky/tests/objects/test_objects_detail.py function test_ooi_detail (line 47) | def test_ooi_detail(rf, client_member, mock_organization_view_octopoes, ... function test_question_detail (line 76) | def test_question_detail( function test_answer_question (line 95) | def test_answer_question( function test_answer_question_bad_schema (line 121) | def test_answer_question_bad_schema( function test_ooi_detail_start_scan (line 150) | def test_ooi_detail_start_scan( function test_ooi_detail_start_scan_no_indemnification (line 186) | def test_ooi_detail_start_scan_no_indemnification( function test_ooi_detail_start_scan_no_action (line 223) | def test_ooi_detail_start_scan_no_action( function test_delete_perms_ooi_detail (line 244) | def test_delete_perms_ooi_detail( function test_delete_perms_ooi_detail_clients (line 261) | def test_delete_perms_ooi_detail_clients( function test_ooi_detail_start_scan_perms (line 276) | def test_ooi_detail_start_scan_perms( FILE: rocky/tests/objects/test_objects_edit.py function test_ooi_edit (line 10) | def test_ooi_edit(rf, client_member, mock_organization_view_octopoes, ne... function test_ooi_edit_report_recipe_get (line 21) | def test_ooi_edit_report_recipe_get(rf, client_member, mock_organization... function test_ooi_edit_report_recipe_post (line 32) | def test_ooi_edit_report_recipe_post( FILE: rocky/tests/objects/test_objects_findings.py function test_ooi_finding_list (line 55) | def test_ooi_finding_list(rf, client_member, mock_organization_view_octo... function test_mute_finding_button_is_visible (line 67) | def test_mute_finding_button_is_visible(request, member, rf, mock_organi... function test_mute_finding_button_is_not_visible_without_perms (line 83) | def test_mute_finding_button_is_not_visible_without_perms( function test_mute_finding_form_view (line 101) | def test_mute_finding_form_view(request, member, rf, mock_organization_v... function test_mute_finding_form_view_no_perms (line 117) | def test_mute_finding_form_view_no_perms(request, member, rf, mock_organ... function test_mute_finding_post (line 126) | def test_mute_finding_post( function test_muted_finding_button_not_presence (line 172) | def test_muted_finding_button_not_presence(rf, mock_organization_view_oc... function test_muted_finding_button_presence_more_findings_and_post (line 203) | def test_muted_finding_button_presence_more_findings_and_post( function test_can_mute_findings_perms (line 262) | def test_can_mute_findings_perms(rf, request, member, mock_organization_... function test_findings_list_filtering (line 303) | def test_findings_list_filtering( FILE: rocky/tests/objects/test_objects_graph.py function test_ooi_graph (line 28) | def test_ooi_graph(rf, client_member, mock_organization_view_octopoes): FILE: rocky/tests/objects/test_objects_scan_profile.py function test_scan_profile (line 40) | def test_scan_profile(rf, redteam_member, mock_scheduler, mock_organizat... function test_scan_profile_submit (line 53) | def test_scan_profile_submit(rf, redteam_member, mock_scheduler, mock_or... function test_scan_profile_submit_no_indemnification (line 72) | def test_scan_profile_submit_no_indemnification( function test_scan_profile_no_permissions_acknowledged (line 95) | def test_scan_profile_no_permissions_acknowledged( function test_scan_profile_no_permissions_trusted (line 113) | def test_scan_profile_no_permissions_trusted( function test_scan_profile_submit_inherited (line 131) | def test_scan_profile_submit_inherited(rf, redteam_member, mock_schedule... FILE: rocky/tests/objects/test_objects_tree.py function test_ooi_tree (line 28) | def test_ooi_tree(rf, client_member, mock_organization_view_octopoes): FILE: rocky/tests/onboarding/test_onboarding.py function test_onboarding_redirect (line 25) | def test_onboarding_redirect(rf, superuser): function test_step_1_onboarding_introduction (line 39) | def test_step_1_onboarding_introduction(superuser_member, rf): function test_step_1_onboarding_introduction_forbidden (line 51) | def test_step_1_onboarding_introduction_forbidden(request, member, rf): function test_step_2a_onboarding_create_organization (line 61) | def test_step_2a_onboarding_create_organization(rf, superuser_member, mo... function test_step_2a_onboarding_create_organization_forbidden (line 73) | def test_step_2a_onboarding_create_organization_forbidden(request, rf, m... function test_step_2a_onboarding_create_organization_already_exist_katalogus (line 85) | def test_step_2a_onboarding_create_organization_already_exist_katalogus( function test_step_2b_onboarding_organization_update (line 104) | def test_step_2b_onboarding_organization_update(rf, superuser_member, ad... function test_step_4_onboarding_acknowledge_clearance_level (line 131) | def test_step_4_onboarding_acknowledge_clearance_level(rf, redteam_membe... function test_step_4_onboarding_acknowledge_clearance_level_no_clearance (line 180) | def test_step_4_onboarding_acknowledge_clearance_level_no_clearance( function test_step_5_onboarding_setup_scan_detail (line 220) | def test_step_5_onboarding_setup_scan_detail(request, member, rf): function test_step_5_onboarding_setup_scan_detail_create_ooi (line 239) | def test_step_5_onboarding_setup_scan_detail_create_ooi( function test_step_6_onboarding_set_clearance_level (line 253) | def test_step_6_onboarding_set_clearance_level( function test_step_7_onboarding_clearance_level_introduction (line 285) | def test_step_7_onboarding_clearance_level_introduction(rf, redteam_memb... function test_step_8_onboarding_select_plugins (line 303) | def test_step_8_onboarding_select_plugins(request, member, rf, mocker, m... function test_step_8_onboarding_select_plugins_perms (line 321) | def test_step_8_onboarding_select_plugins_perms(request, member, rf, url): function test_step_9_onboarding_choose_report_type (line 331) | def test_step_9_onboarding_choose_report_type(request, member, rf): function test_step_9a_onboarding_ooi_detail_scan (line 344) | def test_step_9a_onboarding_ooi_detail_scan( function test_step_9a_onboarding_ooi_detail_scan_create_report_schedule (line 368) | def test_step_9a_onboarding_ooi_detail_scan_create_report_schedule( function test_step_10_onboarding_scanning_boefjes (line 392) | def test_step_10_onboarding_scanning_boefjes( FILE: rocky/tests/reports/test_aggregate_report_flow.py function test_select_all_oois_post_to_select_report_types (line 17) | def test_select_all_oois_post_to_select_report_types( function test_select_some_oois_post_to_select_report_types (line 45) | def test_select_some_oois_post_to_select_report_types( function test_select_query_post_to_select_report_types (line 77) | def test_select_query_post_to_select_report_types( function test_change_ooi_selection_for_none_selection (line 107) | def test_change_ooi_selection_for_none_selection( function test_change_ooi_selection_with_ooi_selection (line 129) | def test_change_ooi_selection_with_ooi_selection( function test_report_types_selection_nothing_selected (line 157) | def test_report_types_selection_nothing_selected( function test_report_types_selection (line 178) | def test_report_types_selection( function test_save_aggregate_report_view (line 222) | def test_save_aggregate_report_view( function test_save_aggregate_report_view_scheduled (line 271) | def test_save_aggregate_report_view_scheduled( function test_json_download_aggregate_report (line 320) | def test_json_download_aggregate_report( FILE: rocky/tests/reports/test_base_report.py function test_aggregate_report_select_oois (line 10) | def test_aggregate_report_select_oois(rf, client_member, mock_organizati... function test_aggregate_report_select_oois_empty_list (line 33) | def test_aggregate_report_select_oois_empty_list( function test_aggregate_report_choose_report_types (line 54) | def test_aggregate_report_choose_report_types( FILE: rocky/tests/reports/test_dns_report.py function test_dns_report_no_findings (line 6) | def test_dns_report_no_findings(mock_octopoes_api_connector, valid_time,... function test_dns_report_two_findings_one_finding_type (line 17) | def test_dns_report_two_findings_one_finding_type( FILE: rocky/tests/reports/test_findings_report.py function test_findings_report_no_findings (line 6) | def test_findings_report_no_findings(mock_octopoes_api_connector, valid_... function test_findings_report_two_findings_one_finding_type (line 20) | def test_findings_report_two_findings_one_finding_type( FILE: rocky/tests/reports/test_generate_report_flow.py function test_select_all_oois_post_to_select_report_types (line 14) | def test_select_all_oois_post_to_select_report_types( function test_select_some_oois_post_to_select_report_types (line 42) | def test_select_some_oois_post_to_select_report_types( function test_select_query_post_to_select_report_types (line 74) | def test_select_query_post_to_select_report_types( function test_change_ooi_selection_for_none_selection (line 104) | def test_change_ooi_selection_for_none_selection( function test_change_ooi_selection_with_ooi_selection (line 126) | def test_change_ooi_selection_with_ooi_selection( function test_report_types_selection_nothing_selected (line 154) | def test_report_types_selection_nothing_selected( function test_report_types_selection (line 176) | def test_report_types_selection( function test_save_generate_report_view (line 215) | def test_save_generate_report_view( function test_save_generate_report_view_scheduled (line 260) | def test_save_generate_report_view_scheduled( FILE: rocky/tests/reports/test_history_report.py function test_report_history_less_than_five_subreports_two_input_objects (line 11) | def test_report_history_less_than_five_subreports_two_input_objects( function test_report_history_more_than_five_asset_reports_one_input_object (line 69) | def test_report_history_more_than_five_asset_reports_one_input_object( function test_report_history_asset_reports_table (line 146) | def test_report_history_asset_reports_table( function test_report_history_report_type_summary (line 213) | def test_report_history_report_type_summary( FILE: rocky/tests/reports/test_ipv6_report.py function test_ipv6_report_hostname_with_ipv6 (line 4) | def test_ipv6_report_hostname_with_ipv6(mock_octopoes_api_connector, val... function test_ipv6_report_hostname_without_ipv6 (line 17) | def test_ipv6_report_hostname_without_ipv6(mock_octopoes_api_connector, ... function test_ipv6_report_ipv4_without_ipv6 (line 30) | def test_ipv6_report_ipv4_without_ipv6(mock_octopoes_api_connector, vali... function test_ipv6_report_ipv4_with_ipv6 (line 44) | def test_ipv6_report_ipv4_with_ipv6(mock_octopoes_api_connector, valid_t... function test_ipv6_report_ipv6_wit_ipv6 (line 58) | def test_ipv6_report_ipv6_wit_ipv6(mock_octopoes_api_connector, valid_ti... FILE: rocky/tests/reports/test_mail_report.py function test_mail_report_no_findings (line 4) | def test_mail_report_no_findings(mock_octopoes_api_connector, valid_time... function test_mail_report_spf_finding (line 19) | def test_mail_report_spf_finding(mock_octopoes_api_connector, valid_time... function test_mail_report_dkim_finding (line 36) | def test_mail_report_dkim_finding( function test_mail_report_dmarc_finding (line 56) | def test_mail_report_dmarc_finding( function test_mail_report_multiple_findings (line 76) | def test_mail_report_multiple_findings( FILE: rocky/tests/reports/test_multi_report_flow.py function test_multi_report_select_oois (line 17) | def test_multi_report_select_oois( function test_multi_report_select_oois_with_query (line 45) | def test_multi_report_select_oois_with_query( function test_multi_report_change_ooi_selection (line 73) | def test_multi_report_change_ooi_selection( function test_multi_report_report_types_selection (line 98) | def test_multi_report_report_types_selection( function test_save_multi_report (line 127) | def test_save_multi_report( function test_view_multi_report (line 172) | def test_view_multi_report( FILE: rocky/tests/reports/test_name_server_report.py function test_name_server_report_no_hostname (line 4) | def test_name_server_report_no_hostname(mock_octopoes_api_connector, val... function test_name_server_report_no_finding_types (line 22) | def test_name_server_report_no_finding_types(mock_octopoes_api_connector... function test_name_server_report_multiple_finding_types (line 46) | def test_name_server_report_multiple_finding_types( FILE: rocky/tests/reports/test_open_ports_report.py function test_open_ports_report_ip_no_port (line 4) | def test_open_ports_report_ip_no_port(mock_octopoes_api_connector, valid... function test_open_ports_report_ip_one_port (line 19) | def test_open_ports_report_ip_one_port( function test_open_ports_report_ip_multiple_ports_sorting (line 40) | def test_open_ports_report_ip_multiple_ports_sorting( function test_open_ports_report_hostname_one_port (line 61) | def test_open_ports_report_hostname_one_port( FILE: rocky/tests/reports/test_plugins.py function test_generate_report_setup_scan_wrong_plugin_id (line 12) | def test_generate_report_setup_scan_wrong_plugin_id( FILE: rocky/tests/reports/test_report_overview.py function test_report_overview_show_reports (line 12) | def test_report_overview_show_reports(rf, redteam_member, mock_organizat... function test_report_overview_rename_reports (line 28) | def test_report_overview_rename_reports( function test_report_overview_rename_non_existant_report (line 60) | def test_report_overview_rename_non_existant_report( function test_report_overview_delete_reports (line 93) | def test_report_overview_delete_reports(rf, redteam_member, mock_organiz... function test_report_overview_delete_reports_no_permission (line 113) | def test_report_overview_delete_reports_no_permission(rf, client_member,... function test_report_overview_rerun_reports (line 133) | def test_report_overview_rerun_reports( function test_aggregate_report_has_asset_reports (line 174) | def test_aggregate_report_has_asset_reports( FILE: rocky/tests/reports/test_report_schedules.py function test_delete_schedule (line 8) | def test_delete_schedule( function test_delete_schedule_no_recipe (line 25) | def test_delete_schedule_no_recipe( function test_delete_schedule_object_not_found (line 38) | def test_delete_schedule_object_not_found( function test_delete_schedule_schedule_not_found (line 53) | def test_delete_schedule_schedule_not_found( FILE: rocky/tests/reports/test_report_tasks.py function test_report_task_list (line 8) | def test_report_task_list(rf, client_member, mock_scheduler, reports_tas... function test_report_task_list_connect_error (line 31) | def test_report_task_list_connect_error(rf, client_member, mock_scheduler): function test_report_task_list_validation_error (line 46) | def test_report_task_list_validation_error(rf, client_member, mock_sched... FILE: rocky/tests/reports/test_rpki_report.py function test_rpki_report_no_ip (line 4) | def test_rpki_report_no_ip(mock_octopoes_api_connector, valid_time, host... function test_rpki_ip_valid (line 19) | def test_rpki_ip_valid(mock_octopoes_api_connector, valid_time, hostname... function test_rpki_hostname_with_ip_valid (line 36) | def test_rpki_hostname_with_ip_valid(mock_octopoes_api_connector, valid_... function test_rpki_hostname_with_two_ips_invalid (line 56) | def test_rpki_hostname_with_two_ips_invalid( FILE: rocky/tests/reports/test_safe_connections_report.py function test_safe_connections_report_no_finding_types (line 4) | def test_safe_connections_report_no_finding_types(mock_octopoes_api_conn... function test_safe_connections_report_single_cipher_finding_type (line 17) | def test_safe_connections_report_single_cipher_finding_type( function test_safe_connections_report_multiple_cipher_finding_types (line 37) | def test_safe_connections_report_multiple_cipher_finding_types( function test_safe_connections_report_no_cipher_finding_types (line 57) | def test_safe_connections_report_no_cipher_finding_types( FILE: rocky/tests/reports/test_systems_report.py function test_systems_report_no_systems (line 4) | def test_systems_report_no_systems(mock_octopoes_api_connector, valid_ti... function test_systems_simple_web_system (line 17) | def test_systems_simple_web_system(mock_octopoes_api_connector, valid_ti... function test_systems_complex_system (line 40) | def test_systems_complex_system(mock_octopoes_api_connector, valid_time,... function test_systems_two_systems (line 63) | def test_systems_two_systems( FILE: rocky/tests/reports/test_tls_report.py function test_tls_report_no_suites_no_findings (line 4) | def test_tls_report_no_suites_no_findings(mock_octopoes_api_connector, v... function test_tls_report_multiple_findings_and_suites (line 17) | def test_tls_report_multiple_findings_and_suites( FILE: rocky/tests/reports/test_vulnerability_report.py function test_vulnerability_report_no_findings (line 4) | def test_vulnerability_report_no_findings(mock_octopoes_api_connector, v... function test_vulnerability_report_single_finding (line 28) | def test_vulnerability_report_single_finding( function test_vulnerability_report_finding_no_score (line 55) | def test_vulnerability_report_finding_no_score( function test_vulnerability_report_two_findings (line 90) | def test_vulnerability_report_two_findings( FILE: rocky/tests/reports/test_web_systems_report.py function test_web_report_no_findings (line 4) | def test_web_report_no_findings(mock_octopoes_api_connector, valid_time,... function test_web_report_all_findings (line 29) | def test_web_report_all_findings( FILE: rocky/tests/scheduler/test_scheduler_errors.py function test_tasks_view_connect_error (line 15) | def test_tasks_view_connect_error(rf, client_member, mock_scheduler): function test_tasks_view_validation_error (line 26) | def test_tasks_view_validation_error(rf, client_member, mock_scheduler): function test_tasks_view_too_many_requests_error (line 37) | def test_tasks_view_too_many_requests_error(rf, client_member, mock_sche... function test_get_task_details_json_bad_task_id (line 51) | def test_get_task_details_json_bad_task_id(rf, client_member, mock_sched... function test_reschedule_task_bad_task_id (line 59) | def test_reschedule_task_bad_task_id(rf, client_member, mock_bytes_clien... FILE: rocky/tests/test_admin.py class OrganizationAdminTestCase (line 12) | class OrganizationAdminTestCase(ModelAdminTestCase): method setUp (line 15) | def setUp(self): class AuthTokenAdminTestCase (line 35) | class AuthTokenAdminTestCase(ModelAdminTestCase): method create_form_instance_data (line 38) | def create_form_instance_data(self, response, instance_data=None): method create (line 43) | def create(self, commit=True, model=None, follow_fk=True, generate_fk=... FILE: rocky/tests/test_api.py function test_api_2fa_enabled (line 5) | def test_api_2fa_enabled(client, settings, admin_user): function test_auth_header_wrong_format (line 17) | def test_auth_header_wrong_format(client, settings, admin_user): FILE: rocky/tests/test_api_organization.py function express_organization (line 34) | def express_organization(organization: Organization) -> dict[str, Any]: class TestOrganizationViewSet (line 46) | class TestOrganizationViewSet(ViewSetTest): method organizations (line 48) | def organizations(self): class TestList (line 74) | class TestList(UsesGetMethod, UsesListEndpoint, Returns200): method test_it_returns_values (line 75) | def test_it_returns_values(self, organizations, json): class TestCreate (line 80) | class TestCreate(UsesPostMethod, UsesListEndpoint, Returns201): method mock_katalogus (line 91) | def mock_katalogus(self, mocker): method mock_octopoes (line 95) | def mock_octopoes(self, mocker): method mock_scheduler (line 99) | def mock_scheduler(self, mocker): method mock_bytes (line 103) | def mock_bytes(self, mocker): method test_it_creates_new_organization (line 106) | def test_it_creates_new_organization(self, initial_ids, json): method test_it_sets_expected_attrs (line 111) | def test_it_sets_expected_attrs(self, data, json): method test_it_returns_organization (line 117) | def test_it_returns_organization(self, json): class TestCreateKatalogusError (line 124) | class TestCreateKatalogusError(UsesPostMethod, UsesListEndpoint, Retur... method mock_services (line 128) | def mock_services(self, mocker): method test_it_returns_error (line 135) | def test_it_returns_error(self, json): class TestCreateOctopoesError (line 142) | class TestCreateOctopoesError(UsesPostMethod, UsesListEndpoint, Return... method mock_services (line 146) | def mock_services(self, mocker): method test_it_returns_error (line 154) | def test_it_returns_error(self, json): class TestRetrieve (line 161) | class TestRetrieve(UsesGetMethod, UsesDetailEndpoint, Returns200): method test_it_returns_organization (line 162) | def test_it_returns_organization(self, organization, json): class TestUpdate (line 167) | class TestUpdate(UsesPatchMethod, UsesDetailEndpoint, Returns200): method mock_services (line 174) | def mock_services(self, mocker): method test_it_sets_expected_attrs (line 181) | def test_it_sets_expected_attrs(self, organization): method test_it_returns_organization (line 189) | def test_it_returns_organization(self, organization, json): class TestDestroy (line 196) | class TestDestroy(UsesDeleteMethod, UsesDetailEndpoint, Returns204): method mock_katalogus (line 205) | def mock_katalogus(self, mocker): method test_it_deletes_organization (line 208) | def test_it_deletes_organization(self, initial_ids, organization, lo... class TestDestroyKatalogusError (line 218) | class TestDestroyKatalogusError(UsesDeleteMethod, UsesDetailEndpoint, ... method mock_services (line 220) | def mock_services(self, mocker): method test_it_returns_error (line 225) | def test_it_returns_error(self, json): class TestDestroyOctopoesError (line 232) | class TestDestroyOctopoesError(UsesDeleteMethod, UsesDetailEndpoint, R... method mock_services (line 234) | def mock_services(self, mocker): method test_it_returns_error (line 239) | def test_it_returns_error(self, json): class TestListNoPermission (line 246) | class TestListNoPermission(UsesGetMethod, UsesListEndpoint, Returns403): class TestCreateNoPermission (line 249) | class TestCreateNoPermission(UsesPostMethod, UsesListEndpoint, Returns... class TestRetrieveNoPermission (line 252) | class TestRetrieveNoPermission(UsesGetMethod, UsesDetailEndpoint, Retu... class TestDestroyNoPermission (line 255) | class TestDestroyNoPermission(UsesDeleteMethod, UsesDetailEndpoint, Re... class TestGetIndemnification (line 259) | class TestGetIndemnification(APIViewTest, UsesGetMethod, Returns200): method test_it_returns_indemnification (line 266) | def test_it_returns_indemnification(self, json, superuser_member): class TestIndemnificationDoesNotExist (line 271) | class TestIndemnificationDoesNotExist(APIViewTest, UsesGetMethod, Return... method test_it_returns_no_indemnification (line 275) | def test_it_returns_no_indemnification(self, json): class TestGetIndemnificationNoPermission (line 280) | class TestGetIndemnificationNoPermission(APIViewTest, UsesGetMethod, Ret... class TestSetIndemnification (line 285) | class TestSetIndemnification(APIViewTest, UsesPostMethod, Returns201): method client (line 289) | def client(self, drf_redteam_client, redteamuser): method test_it_sets_indemnification (line 293) | def test_it_sets_indemnification(self, json, redteamuser): class TestSetIndemnificationNoPermission (line 298) | class TestSetIndemnificationNoPermission(APIViewTest, UsesPostMethod, Re... class TestIndemnificationAlreadyExists (line 303) | class TestIndemnificationAlreadyExists(APIViewTest, UsesPostMethod, Retu... method test_it_returns_indemnification (line 310) | def test_it_returns_indemnification(self, json, superuser_member): class TestRecalculateBits (line 315) | class TestRecalculateBits(APIViewTest, UsesPostMethod, Returns200): method client (line 319) | def client(self, drf_redteam_client, redteamuser): method mock_octopoes (line 324) | def mock_octopoes(self, mocker): method test_it_recalculates_bits (line 327) | def test_it_recalculates_bits(self, json): class TestRecalculateBitsNoPermission (line 332) | class TestRecalculateBitsNoPermission(APIViewTest, UsesPostMethod, Retur... class TestKatalogusCloneSettings (line 337) | class TestKatalogusCloneSettings(APIViewTest, UsesPostMethod, Returns200): method client (line 342) | def client(self, drf_redteam_client, redteamuser): method mock_katalogus (line 353) | def mock_katalogus(self, mocker): method test_it_clones_settings (line 356) | def test_it_clones_settings(self, mock_katalogus, organization, organi... class TestCloneKatalogusSettingsNoPermission (line 362) | class TestCloneKatalogusSettingsNoPermission(APIViewTest, UsesPostMethod... class TestCloneKatalogusSettingsInvalidData (line 367) | class TestCloneKatalogusSettingsInvalidData(APIViewTest, UsesPostMethod,... method client (line 372) | def client(self, drf_redteam_client, redteamuser): FILE: rocky/tests/test_boefjes_tasks.py function test_boefjes_tasks (line 11) | def test_boefjes_tasks(rf, client_member, mock_scheduler): function test_tasks_view_simple (line 27) | def test_tasks_view_simple(rf, client_member, mock_scheduler, mock_sched... function test_reschedule_task (line 34) | def test_reschedule_task(rf, client_member, mock_scheduler, task): function test_reschedule_task_already_queued (line 53) | def test_reschedule_task_already_queued(rf, client_member, mock_schedule... function test_reschedule_task_from_other_org (line 74) | def test_reschedule_task_from_other_org(rf, client_member, client_member... function test_download_task_other_org_from_other_org_url (line 88) | def test_download_task_other_org_from_other_org_url( function test_download_task_same_org (line 99) | def test_download_task_same_org(rf, client_member, mock_bytes_client, by... function test_download_task_no_raw (line 112) | def test_download_task_no_raw(rf, client_member, mock_bytes_client, byte... FILE: rocky/tests/test_core.py function test_root (line 1) | def test_root(client): function test_404 (line 7) | def test_404(client, clientuser): FILE: rocky/tests/test_dashboard.py function test_expected_findings_results_dashboard (line 22) | def test_expected_findings_results_dashboard(rf, mocker, client_member, ... function test_get_organizations_findings_summary (line 79) | def test_get_organizations_findings_summary(expected_findings_results): function test_get_organizations_findings_summary_no_input (line 106) | def test_get_organizations_findings_summary_no_input(): function test_get_organizations_findings (line 114) | def test_get_organizations_findings(findings_reports_data): function test_get_organizations_findings_no_finding_types (line 132) | def test_get_organizations_findings_no_finding_types(findings_reports_da... function test_get_organizations_findings_no_input (line 144) | def test_get_organizations_findings_no_input(): function test_collect_findings_dashboard (line 152) | def test_collect_findings_dashboard(findings_results, expected_findings_... function test_create_dashboard (line 166) | def test_create_dashboard(rf, redteam_member): function test_create_dashboard_no_permission (line 184) | def test_create_dashboard_no_permission(rf, client_member): function test_create_dashboard_already_exist (line 194) | def test_create_dashboard_already_exist(rf, redteam_member): function test_update_dashboard_item_positioning (line 210) | def test_update_dashboard_item_positioning(rf, redteam_member, dashboard... function test_update_dashboard_item_positioning_no_permission (line 240) | def test_update_dashboard_item_positioning_no_permission(rf, client_memb... function test_update_dashboard_item_positioning_lower_than_first_item (line 248) | def test_update_dashboard_item_positioning_lower_than_first_item(rf, red... function test_update_dashboard_item_positioning_greater_than_last_item (line 265) | def test_update_dashboard_item_positioning_greater_than_last_item(rf, re... function test_delete_dashboard_item (line 282) | def test_delete_dashboard_item(rf, redteam_member, dashboard_items): function test_delete_dashboard_item_no_permission (line 320) | def test_delete_dashboard_item_no_permission(rf, client_member, dashboar... function test_delete_dashboard_item_repositioning (line 332) | def test_delete_dashboard_item_repositioning(rf, client_member, dashboar... function test_delete_dashboard_item_no_dashboard (line 354) | def test_delete_dashboard_item_no_dashboard(rf, redteam_member, dashboar... function test_delete_dashboard_item_no_dashboard_data (line 373) | def test_delete_dashboard_item_no_dashboard_data(rf, redteam_member, das... function test_delete_dashboard (line 391) | def test_delete_dashboard(rf, redteam_member, dashboard_items): function test_delete_dashboard_no_permission (line 411) | def test_delete_dashboard_no_permission(rf, client_member, dashboard_ite... function test_create_dashboard_item_form_object_list (line 421) | def test_create_dashboard_item_form_object_list(client_member, dashboard... function test_organization_crisis_room (line 498) | def test_organization_crisis_room(rf, mocker, client_member, dashboard_i... function test_clients_permissions_for_dashboard (line 515) | def test_clients_permissions_for_dashboard(rf, mocker, client_member, da... function test_create_dashboard_item_form_findings_list (line 534) | def test_create_dashboard_item_form_findings_list(client_member, dashboa... FILE: rocky/tests/test_findings_add.py function test_findings_add (line 7) | def test_findings_add(rf, client_member, mock_organization_view_octopoes): FILE: rocky/tests/test_groups_and_permissions.py function test_indemnification_present (line 12) | def test_indemnification_present(superuser_member): function test_account_detail_perms (line 16) | def test_account_detail_perms(rf, superuser_member, admin_member, redtea... function test_plugin_settings_list_perms (line 49) | def test_plugin_settings_list_perms( function test_plugin_settings_list_perms_2 (line 87) | def test_plugin_settings_list_perms_2( FILE: rocky/tests/test_health.py function test_flatten_health_simple (line 5) | def test_flatten_health_simple(): function test_flatten_health_recursive (line 10) | def test_flatten_health_recursive(): FILE: rocky/tests/test_indemnification.py function test_update_clearance_level (line 8) | def test_update_clearance_level(rf, client_member, httpx_mock): FILE: rocky/tests/test_landing_page.py function test_landing_page_redirect (line 8) | def test_landing_page_redirect(rf, client_member): function test_language_lang_attribute (line 15) | def test_language_lang_attribute(rf, client_member, language): FILE: rocky/tests/test_members.py function test_admin_can_edit_itself (line 11) | def test_admin_can_edit_itself(rf, admin_member): function test_superuser_can_edit_itself (line 24) | def test_superuser_can_edit_itself(rf, superuser_member): function test_client_can_edit_itself (line 37) | def test_client_can_edit_itself(rf, client_member): function test_redteam_can_edit_itself (line 49) | def test_redteam_can_edit_itself(rf, redteam_member): function test_admin_can_edit_superuser (line 61) | def test_admin_can_edit_superuser(rf, admin_member, superuser_member): function test_client_can_edit_superuser (line 73) | def test_client_can_edit_superuser(rf, client_member, superuser_member): function test_redteamer_can_edit_superuser (line 85) | def test_redteamer_can_edit_superuser(rf, redteam_member, superuser_memb... function test_edit_superusers_from_different_organizations (line 95) | def test_edit_superusers_from_different_organizations(rf, superuser_memb... function test_edit_admins_from_different_organizations (line 108) | def test_edit_admins_from_different_organizations(rf, admin_member, admi... function test_admin_edits_client_different_orgs (line 122) | def test_admin_edits_client_different_orgs(rf, admin_member, client_memb... function test_admin_edits_redteamer (line 132) | def test_admin_edits_redteamer(rf, admin_member, redteam_member, log_out... function test_admin_edits_redteamer_to_block (line 150) | def test_admin_edits_redteamer_to_block(rf, admin_member, redteam_member): function test_account_type_view_existence (line 162) | def test_account_type_view_existence(rf, admin_member): function test_check_add_redteamer_form (line 171) | def test_check_add_redteamer_form(rf, admin_member): function test_check_add_admin_client_form (line 197) | def test_check_add_admin_client_form(rf, admin_member, account_type): FILE: rocky/tests/test_migrations.py function test_for_missing_migrations (line 9) | def test_for_missing_migrations(): FILE: rocky/tests/test_models.py function test_organizationtag_cssclass (line 6) | def test_organizationtag_cssclass(): function test_user_organization_cache (line 12) | def test_user_organization_cache(superuser_member, django_assert_num_que... function test_organizationmember_no_permissions (line 18) | def test_organizationmember_no_permissions(active_member, django_assert_... function test_organizationmember_permissions (line 25) | def test_organizationmember_permissions(active_member, django_assert_num... function test_organizationmember_permissions_superuser (line 47) | def test_organizationmember_permissions_superuser(superuser_member, djan... function test_user_two_organization (line 54) | def test_user_two_organization(client_user_two_organizations, organizati... function test_user_one_organization (line 60) | def test_user_one_organization(client_member, organization_b): function test_user_organization_blocked (line 64) | def test_user_organization_blocked(blocked_member, organization_b): function test_superuser_organizations (line 68) | def test_superuser_organizations(superuser, organization, organization_b): function test_can_access_all_organizations (line 72) | def test_can_access_all_organizations(client_member, organization_b): function test_max_clearance_level (line 83) | def test_max_clearance_level(client_member): function test_max_clearance_level_not_acknowledged (line 115) | def test_max_clearance_level_not_acknowledged(client_member): FILE: rocky/tests/test_observed_at.py function test_observed_at_no_value (line 14) | def test_observed_at_no_value(mocker): function test_observed_at_date (line 27) | def test_observed_at_date(mocker): function test_observed_at_datetime (line 36) | def test_observed_at_datetime(mocker): function test_observed_at_datetime_with_timezone (line 45) | def test_observed_at_datetime_with_timezone(mocker): function test_observed_at_future_date (line 54) | def test_observed_at_future_date(rf, client_member, mock_organization_vi... FILE: rocky/tests/test_ooi_information.py function test_port_info (line 6) | def test_port_info(mocker): function test_service_info (line 25) | def test_service_info(mocker): FILE: rocky/tests/test_organization.py function bulk_organizations (line 23) | def bulk_organizations(active_member, blocked_member): function test_organization_list_non_superuser (line 40) | def test_organization_list_non_superuser(rf, client_member): function test_edit_organization (line 51) | def test_edit_organization(rf, superuser_member): function test_add_organization_page (line 63) | def test_add_organization_page(rf, superuser_member): function test_add_organization_submit_success (line 75) | def test_add_organization_submit_success(rf, superuser_member, mocker, m... function test_add_organization_submit_katalogus_down (line 156) | def test_add_organization_submit_katalogus_down(rf, superuser_member, mo... function test_add_organization_submit_katalogus_exception (line 168) | def test_add_organization_submit_katalogus_exception(rf, superuser_membe... function test_add_organization_submit_katalogus_not_healthy (line 181) | def test_add_organization_submit_katalogus_not_healthy(rf, superuser_mem... function test_organization_list (line 192) | def test_organization_list(rf, superuser_member, bulk_organizations, dja... function test_organization_member_list (line 209) | def test_organization_member_list(rf, admin_member): function test_organization_filtered_member_list (line 239) | def test_organization_filtered_member_list(rf, superuser_member, new_mem... function test_organization_does_not_exist (line 272) | def test_organization_does_not_exist(client, client_member): function test_organization_no_member (line 279) | def test_organization_no_member(client, clientuser, organization): function test_organization_active_member (line 286) | def test_organization_active_member(rf, admin_member): function test_organization_blocked_member (line 294) | def test_organization_blocked_member(rf, admin_member): function test_edit_organization_permissions (line 302) | def test_edit_organization_permissions(rf, redteam_member, client_member): function test_edit_organization_indemnification (line 316) | def test_edit_organization_indemnification(rf, redteam_member, client_me... function test_admin_rights_edits_organization (line 330) | def test_admin_rights_edits_organization(rf, admin_member): function test_admin_edits_organization (line 340) | def test_admin_edits_organization(rf, admin_member, mocker): function test_organization_code_validator_from_view (line 367) | def test_organization_code_validator_from_view(rf, superuser_member, moc... function test_organization_code_validator_from_model (line 384) | def test_organization_code_validator_from_model(mocker, mock_models_octo... function test_organization_settings_perms (line 401) | def test_organization_settings_perms(rf, superuser_member, admin_member,... function test_organization_member_list_perms (line 432) | def test_organization_member_list_perms(rf, superuser_member, admin_memb... function test_organization_list_perms (line 459) | def test_organization_list_perms(rf, superuser_member, admin_member, cli... function test_organization_edit_perms (line 482) | def test_organization_edit_perms(request, member, rf): function test_organization_edit_view (line 495) | def test_organization_edit_view(request, member, rf): function test_organization_edit_perms_on_settings_view (line 508) | def test_organization_edit_perms_on_settings_view(request, member, rf): FILE: rocky/tests/test_privacy_statement.py function test_privacy_statement (line 7) | def test_privacy_statement(rf, client_member): FILE: rocky/tests/test_scans.py function test_katalogus_plugin_listing (line 10) | def test_katalogus_plugin_listing(client_member, rf, httpx_mock): FILE: rocky/tests/test_upload_csv.py function test_upload_csv_page (line 42) | def test_upload_csv_page(rf, redteam_member): function test_upload_csv_simple (line 50) | def test_upload_csv_simple(rf, redteam_member): function test_upload_bad_input (line 57) | def test_upload_bad_input(rf, redteam_member, mock_organization_view_oct... function test_upload_bad_name (line 76) | def test_upload_bad_name(rf, redteam_member, mock_bytes_client): function test_upload_bad_decoding (line 90) | def test_upload_bad_decoding(rf, redteam_member, mock_bytes_client): function test_upload_csv (line 107) | def test_upload_csv( FILE: rocky/tests/test_upload_members.py function test_upload_members_page (line 13) | def test_upload_members_page(rf, superuser_member): function test_download_template (line 23) | def test_download_template(rf, superuser_member): function test_upload_members_page_forbidden (line 34) | def test_upload_members_page_forbidden(rf, redteam_member): function test_upload_members (line 41) | def test_upload_members(rf, superuser_member): function test_upload_bad_columns (line 63) | def test_upload_bad_columns(rf, superuser_member): FILE: rocky/tests/test_upload_raw.py function test_upload_raw_page (line 10) | def test_upload_raw_page(rf, redteam_member, mock_organization_view_octo... function test_upload_raw_simple (line 18) | def test_upload_raw_simple(rf, redteam_member, mock_organization_view_oc... function test_upload_empty (line 25) | def test_upload_empty(rf, redteam_member, mock_organization_view_octopoe... function test_upload_raw (line 42) | def test_upload_raw(rf, redteam_member, mock_organization_view_octopoes,... function test_upload_raw_empty_mime_types (line 68) | def test_upload_raw_empty_mime_types(rf, redteam_member, mock_bytes_clie... FILE: rocky/tests/test_validators.py function test_password_validators_help_texts_default (line 10) | def test_password_validators_help_texts_default(): function test_password_validators_help_texts_all_options (line 33) | def test_password_validators_help_texts_all_options(): FILE: rocky/tests/test_zip.py function test_zip_data (line 6) | def test_zip_data(): FILE: rocky/tools/add_ooi_information.py class _Service (line 19) | class _Service: class _PortInfo (line 27) | class _PortInfo: class InformationUpdateError (line 33) | class InformationUpdateError(Exception): function iana_service_table (line 37) | def iana_service_table(source: str, search_query: str) -> list[_Service]: function service_info (line 65) | def service_info(value: str) -> tuple[str, str]: function table_to_2d (line 83) | def table_to_2d(table_tag): function _map_usage_value (line 143) | def _map_usage_value(value: str) -> bool: function wiki_port_tables (line 148) | def wiki_port_tables(source: str) -> list[_PortInfo]: function port_info (line 178) | def port_info(number: str, protocol: str) -> tuple[str, str]: function get_info (line 193) | def get_info(ooi_type: str, natural_key: str) -> dict: FILE: rocky/tools/admin.py class JSONInfoWidget (line 15) | class JSONInfoWidget(widgets.Textarea): method format_value (line 17) | def format_value(self, value): class OOIInformationAdmin (line 30) | class OOIInformationAdmin(admin.ModelAdmin): method get_readonly_fields (line 38) | def get_readonly_fields( class OrganizationAdmin (line 48) | class OrganizationAdmin(admin.ModelAdmin): method add_view (line 51) | def add_view(self, request, *args, **kwargs): method get_readonly_fields (line 58) | def get_readonly_fields(self, request, obj=None): class OrganizationMemberAdmin (line 70) | class OrganizationMemberAdmin(admin.ModelAdmin): class IndemnificationAdmin (line 75) | class IndemnificationAdmin(admin.ModelAdmin): method get_readonly_fields (line 78) | def get_readonly_fields(self, request, obj=None): class OrganizationTagAdmin (line 86) | class OrganizationTagAdmin(admin.ModelAdmin): class DahboardDataAdmin (line 91) | class DahboardDataAdmin(admin.ModelAdmin): class DahboardAdmin (line 96) | class DahboardAdmin(admin.ModelAdmin): FILE: rocky/tools/apps.py class ToolsConfig (line 4) | class ToolsConfig(AppConfig): FILE: rocky/tools/context_processors.py function feature_flags (line 7) | def feature_flags(request): function languages (line 15) | def languages(request): function organizations_including_blocked (line 20) | def organizations_including_blocked(request): function rocky_version (line 27) | def rocky_version(request): FILE: rocky/tools/enums.py class SCAN_LEVEL (line 7) | class SCAN_LEVEL(models.IntegerChoices): class CUSTOM_SCAN_LEVEL (line 18) | class CUSTOM_SCAN_LEVEL(models.Choices): FILE: rocky/tools/fields.py class LowerCaseSlugField (line 4) | class LowerCaseSlugField(models.SlugField): method to_python (line 5) | def to_python(self, value): FILE: rocky/tools/forms/base.py class BaseRockyModelForm (line 11) | class BaseRockyModelForm(forms.ModelForm): method __init__ (line 12) | def __init__(self, *args, **kwargs): class BaseRockyForm (line 17) | class BaseRockyForm(forms.Form): method __init__ (line 18) | def __init__(self, *args, **kwargs): method set_choices_for_field (line 22) | def set_choices_for_field(self, field: str, choices: Choices | Choices... method set_choices_for_widget (line 26) | def set_choices_for_widget(self, field: str, choices: Choices | Choice... method set_required_options_for_widget (line 29) | def set_required_options_for_widget(self, field: str, required_options... class DateInput (line 34) | class DateInput(forms.DateInput): class DateTimeInput (line 38) | class DateTimeInput(forms.DateTimeInput): class DataListInput (line 42) | class DataListInput(forms.Select): method __init__ (line 46) | def __init__(self, attrs=None, choices=()): method format_value (line 50) | def format_value(self, value): class ObservedAtForm (line 57) | class ObservedAtForm(BaseRockyForm): class LabeledCheckboxInput (line 63) | class LabeledCheckboxInput(forms.CheckboxInput): method __init__ (line 66) | def __init__(self, label: str = "", autosubmit: bool = False): method get_context (line 71) | def get_context(self, name, value, attrs): class CheckboxGroup (line 79) | class CheckboxGroup(forms.CheckboxSelectMultiple): method __init__ (line 86) | def __init__(self, required_options: list[str] | None = None, *args: A... method get_context (line 90) | def get_context(self, name: str, value: Any, attrs: dict[str, Any] | N... method create_option (line 94) | def create_option(self, *arg: Any, **kwargs: Any) -> dict[str, Any]: method is_required_option (line 101) | def is_required_option(self, value: str) -> bool: class CheckboxTable (line 105) | class CheckboxTable(Widget): method __init__ (line 115) | def __init__(self, attrs=None, column_names=(), choices=(), column_tem... method get_context (line 121) | def get_context(self, name, value, attrs): method id_for_label (line 135) | def id_for_label(self, id_, index="0"): method create_option (line 144) | def create_option(self, name, value, label, selected, index, attrs=None): method value_from_datadict (line 165) | def value_from_datadict(self, data, files, name): method format_value (line 174) | def format_value(self, value): FILE: rocky/tools/forms/boefje.py class BoefjeSetupForm (line 29) | class BoefjeSetupForm(BaseRockyForm): FILE: rocky/tools/forms/finding_type.py class FindingTypeAddForm (line 23) | class FindingTypeAddForm(BaseRockyForm): method clean_id (line 66) | def clean_id(self): method check_finding_type_existence (line 74) | def check_finding_type_existence(self, finding_type_id): class FindingAddForm (line 81) | class FindingAddForm(BaseRockyForm): method __init__ (line 118) | def __init__(self, connector: OctopoesAPIConnector, ooi_list: list[tup... method clean_date (line 123) | def clean_date(self): method clean_ooi_id (line 132) | def clean_ooi_id(self): FILE: rocky/tools/forms/findings.py class FindingSeverityMultiSelectForm (line 18) | class FindingSeverityMultiSelectForm(forms.Form): class MutedFindingSelectionForm (line 27) | class MutedFindingSelectionForm(BaseRockyForm): class FindingSearchForm (line 37) | class FindingSearchForm(BaseRockyForm): class OrderByFindingTypeForm (line 43) | class OrderByFindingTypeForm(BaseRockyForm): class OrderBySeverityForm (line 47) | class OrderBySeverityForm(BaseRockyForm): FILE: rocky/tools/forms/ooi.py class OOIReportSettingsForm (line 12) | class OOIReportSettingsForm(ObservedAtForm): class OoiTreeSettingsForm (line 18) | class OoiTreeSettingsForm(OOIReportSettingsForm): method __init__ (line 21) | def __init__(self, ooi_types: list[str], *args: Any, **kwargs: Any): method set_ooi_types (line 25) | def set_ooi_types(self, ooi_types: list[str]) -> None: class SelectOOIForm (line 33) | class SelectOOIForm(BaseRockyForm): method __init__ (line 47) | def __init__( method _to_choice (line 64) | def _to_choice(ooi_with_schedule: tuple[OOI, ScheduleResponse | None])... class SelectOOIFilterForm (line 70) | class SelectOOIFilterForm(BaseRockyForm): class PossibleBoefjesFilterForm (line 77) | class PossibleBoefjesFilterForm(BaseRockyForm): class SetClearanceLevelForm (line 83) | class SetClearanceLevelForm(forms.Form): class MuteFindingForm (line 109) | class MuteFindingForm(forms.Form): FILE: rocky/tools/forms/ooi_form.py class OOIForm (line 22) | class OOIForm(BaseRockyForm): method __init__ (line 23) | def __init__(self, ooi_class: type[OOI], connector: OctopoesAPIConnect... method clean (line 34) | def clean(self): method get_fields (line 38) | def get_fields(self) -> dict[str, forms.fields.Field]: method generate_form_fields (line 41) | def generate_form_fields(self, hidden_ooi_fields: dict[str, str] | Non... function generate_select_ooi_field (line 107) | def generate_select_ooi_field( function generate_select_ooi_type (line 140) | def generate_select_ooi_type(name: str, enumeration: type[Enum], field: ... function generate_ip_field (line 148) | def generate_ip_field(field: FieldInfo) -> forms.fields.Field: function generate_url_field (line 155) | def generate_url_field(field: FieldInfo) -> forms.fields.Field: class DefaultFieldOptions (line 166) | class DefaultFieldOptions(TypedDict): function default_field_options (line 171) | def default_field_options(name: str, field_info: FieldInfo) -> DefaultFi... class ClearanceFilterForm (line 175) | class ClearanceFilterForm(BaseRockyForm): class OOITypeMultiCheckboxForm (line 212) | class OOITypeMultiCheckboxForm(BaseRockyForm): class OOISearchForm (line 218) | class OOISearchForm(BaseRockyForm): class OrderByObjectTypeForm (line 222) | class OrderByObjectTypeForm(BaseRockyForm): class CustomMultipleHiddenInput (line 226) | class CustomMultipleHiddenInput(forms.MultipleHiddenInput): method format_value (line 227) | def format_value(self, value): method render (line 232) | def render(self, name, value, attrs=None, renderer=None): class OOIFilterForm (line 238) | class OOIFilterForm(OOISearchForm, ClearanceFilterForm, OOITypeMultiChec... method __init__ (line 239) | def __init__(self, *args, **kwargs): method get_query (line 247) | def get_query(self) -> dict[str, Any]: class FindingFilterForm (line 258) | class FindingFilterForm(FindingSearchForm, MutedFindingSelectionForm, Fi... method __init__ (line 259) | def __init__(self, *args, **kwargs): method get_query (line 266) | def get_query(self) -> dict[str, Any]: FILE: rocky/tools/forms/scheduler.py class TaskFilterForm (line 9) | class TaskFilterForm(forms.Form): method __init__ (line 42) | def __init__(self, *args, organizations=None, **kwargs): method clean (line 50) | def clean(self): class OrganizationTaskFilterForm (line 74) | class OrganizationTaskFilterForm(TaskFilterForm): method __init__ (line 77) | def __init__(self, *args, **kwargs): class OOIDetailTaskFilterForm (line 81) | class OOIDetailTaskFilterForm(OrganizationTaskFilterForm): FILE: rocky/tools/forms/upload_csv.py class UploadCSVForm (line 15) | class UploadCSVForm(forms.Form): method clean_csv_file (line 20) | def clean_csv_file(self): FILE: rocky/tools/forms/upload_oois.py class UploadOOICSVForm (line 16) | class UploadOOICSVForm(UploadCSVForm): FILE: rocky/tools/forms/upload_raw.py class UploadRawForm (line 14) | class UploadRawForm(BaseRockyForm): method __init__ (line 42) | def __init__(self, connector: OctopoesAPIConnector, ooi_list: list[tup... method clean_mime_types (line 59) | def clean_mime_types(self) -> set[str]: method clean (line 64) | def clean(self): FILE: rocky/tools/management/commands/almost_flush.py class Command (line 13) | class Command(BaseCommand): method handle (line 19) | def handle(self, **options): method collect_entities (line 32) | def collect_entities(self): method save_entities_again (line 54) | def save_entities_again(self, device, first_user, groups, member, inde... FILE: rocky/tools/management/commands/export_migrations.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser: CommandParser) -> None: method handle (line 21) | def handle(self, **options: Any) -> None: FILE: rocky/tools/management/commands/makemessages.py class Command (line 4) | class Command(makemessages.Command): method write_po_file (line 5) | def write_po_file(self, *args, **kwargs): FILE: rocky/tools/management/commands/setup_dev_account.py class Command (line 13) | class Command(BaseCommand): method get_permissions (line 16) | def get_permissions(self, codenames): method setup_kat_groups (line 29) | def setup_kat_groups(self): method handle (line 36) | def handle(self, *args, **options): FILE: rocky/tools/management/commands/setup_test_org.py class Command (line 30) | class Command(BaseCommand): method add_arguments (line 33) | def add_arguments(self, parser): method handle (line 53) | def handle(self, *args, **options): method _get_user (line 93) | def _get_user(self, email): method _create_organization (line 109) | def _create_organization(self, code, name): method _create_member (line 120) | def _create_member(self, user, org, clearance_level): method _create_indemnification (line 137) | def _create_indemnification(self, user, org): method _add_oois (line 146) | def _add_oois(self, org_code, hostname, clearance_level): method _enable_boefjes (line 198) | def _enable_boefjes(self, org_code): FILE: rocky/tools/migrations/0001_initial.py class Migration (line 10) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0001_squashed_0041_merge_20230731_1131.py class Migration (line 13) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0002_alter_organization_octopoes_host.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0003_change_orgazation_host_to_code.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0004_ooiinformation.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0005_scanprofile.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0006_alter_organization_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0007_update_job.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0008_organizationmember_verified.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0009_scanprofile_is_source_ooi.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0010_alter_scanprofile_reference.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0011_job_input_ooi.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0012_rename_module_job_boefje_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0013_boefjeconfig.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0014_drop_dispatches_field.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0015_alter_job_input_ooi.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0016_organization_signal_fields.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0017_alter_organizationmember_foreignkey.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0018_alter_boefjeconfig_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0019_alter_scanprofile_remove_level_and_user.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0020_auto_20220524_1324.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0021_delete_boefjeconfig.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0022_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0023_delete_scanprofile.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0024_auto_20221005_1251.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0025_auto_20221027_1233.py class Migration (line 7) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0026_auto_20221031_1344.py function migrate_permissions (line 8) | def migrate_permissions(apps, schema_editor): function add_group_permissions (line 15) | def add_group_permissions(apps, schema_editor): class Migration (line 26) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0027_auto_20230103_1721.py class Migration (line 11) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0028_auto_20230117_1242.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0029_alter_organizationtag_color.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0029_set_user_full_name.py function set_full_name (line 6) | def set_full_name(apps, schema_editor): class Migration (line 16) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0030_auto_20230227_1458.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0031_merge_20230301_2012.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0032_alter_organizationmember_user.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0033_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0033_auto_20230407_1113.py function migrate_organizationmember_status_blocked_to_blocked_attribute (line 6) | def migrate_organizationmember_status_blocked_to_blocked_attribute(apps,... class Migration (line 11) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0034_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0034_organizationmember_groups.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0035_update_ooi_delete_perm.py function migrate_permissions (line 8) | def migrate_permissions(apps, schema_editor): function add_group_permissions (line 15) | def add_group_permissions(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0035_update_perms_move_and_clear_groups.py function add_group_permissions (line 11) | def add_group_permissions(apps, schema_editor): function migrate_user_groups_to_organizationmember (line 21) | def migrate_user_groups_to_organizationmember(apps, schema_editor): function clear_group_from_users (line 28) | def clear_group_from_users(apps, schema_editor): class Migration (line 34) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0036_merge_20230504_1629.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0037_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0038_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0038_delete_job.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0039_merge_0038_alter_organization_options_0038_delete_job.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0039_update_permissions.py function migrate_permissions (line 9) | def migrate_permissions(apps, schema_editor): function add_group_permissions (line 16) | def add_group_permissions(apps, schema_editor): class Migration (line 34) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0040_admin_inherits_red_teamer_permissions.py function migrate_permissions (line 9) | def migrate_permissions(apps, schema_editor): function add_group_permissions (line 16) | def add_group_permissions(apps, schema_editor): class Migration (line 38) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0040_update_admin_permission.py function migrate_permissions (line 8) | def migrate_permissions(apps, schema_editor): function add_admin_permission (line 15) | def add_admin_permission(apps, schema_editor): class Migration (line 25) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0041_merge_20230731_1131.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0042_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0043_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0044_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0045_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0045_update_permissions.py function migrate_permissions (line 7) | def migrate_permissions(apps, schema_editor): function add_group_permissions (line 14) | def add_group_permissions(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0046_alter_organization_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: rocky/tools/migrations/0047_alter_organization_code_alter_organization_name.py class Migration (line 8) | class Migration(migrations.Migration): FILE: rocky/tools/models.py class OrganizationTag (line 53) | class OrganizationTag(tagulous.models.TagTreeModel): class TagMeta (line 60) | class TagMeta: method css_class (line 65) | def css_class(self): class Organization (line 69) | class Organization(models.Model): method __str__ (line 85) | def __str__(self) -> str: class Meta (line 88) | class Meta: method get_absolute_url (line 105) | def get_absolute_url(self): method clean (line 108) | def clean(self): class OrganizationMember (line 120) | class OrganizationMember(models.Model): class STATUSES (line 124) | class STATUSES(models.TextChoices): method all_permissions (line 144) | def all_permissions(self) -> set[str]: method has_perm (line 163) | def has_perm(self, perm: str) -> bool: method has_perms (line 166) | def has_perms(self, perm_list: Iterable[str]) -> bool: method max_clearance_level (line 170) | def max_clearance_level(self) -> int: method has_clearance_level (line 189) | def has_clearance_level(self, level: int) -> bool: method can_add_dashboard (line 193) | def can_add_dashboard(self): method can_change_dashboard (line 197) | def can_change_dashboard(self): method can_delete_dashboard (line 201) | def can_delete_dashboard(self): method can_reposition_dashboard_item (line 205) | def can_reposition_dashboard_item(self): method can_add_dashboard_item (line 209) | def can_add_dashboard_item(self): method can_delete_dashboard_item (line 213) | def can_delete_dashboard_item(self): method can_change_dashboard_item (line 217) | def can_change_dashboard_item(self): method can_modify_dashboard (line 221) | def can_modify_dashboard(self) -> bool: method can_modify_dashboard_item (line 228) | def can_modify_dashboard_item(self) -> bool: class Meta (line 239) | class Meta: method __str__ (line 242) | def __str__(self) -> str: class Indemnification (line 246) | class Indemnification(models.Model): class OOIInformation (line 253) | class OOIInformation(models.Model): method save (line 261) | def save(self, *args, **kwargs): method clean (line 269) | def clean(self): method type (line 274) | def type(self): method value (line 278) | def value(self): method description (line 282) | def description(self): method get_internet_description (line 288) | def get_internet_description(self): method __str__ (line 296) | def __str__(self) -> str: FILE: rocky/tools/ooi_helpers.py function format_attr_name (line 34) | def format_attr_name(s: str) -> str: function format_value (line 38) | def format_value(value: Any) -> str: function format_display (line 44) | def format_display(data: dict, ignore: list | None = None) -> dict[str, ... function get_knowledge_base_data_for_ooi_store (line 51) | def get_knowledge_base_data_for_ooi_store(ooi_store: dict) -> dict[str, ... function get_knowledge_base_data_for_ooi (line 62) | def get_knowledge_base_data_for_ooi(ooi: OOI) -> dict: function process_value (line 81) | def process_value(value: Any) -> Any: function get_ooi_dict (line 89) | def get_ooi_dict(ooi: OOI) -> dict: function get_tree_meta (line 103) | def get_tree_meta(tree_node: dict, depth: int, location: str) -> dict: function create_object_tree_item_from_ref (line 126) | def create_object_tree_item_from_ref( function get_ooi_types_from_tree (line 168) | def get_ooi_types_from_tree(ooi, include_self=True): function filter_ooi_tree (line 181) | def filter_ooi_tree(ooi_node: dict, show_types: Sequence = [], hide_type... function filter_ooi_tree_item (line 190) | def filter_ooi_tree_item(ooi_node, show_types, hide_types, self_excluded... function get_finding_type_from_finding (line 221) | def get_finding_type_from_finding(finding: Finding) -> FindingType: function get_or_create_ooi (line 231) | def get_or_create_ooi( function create_ooi (line 245) | def create_ooi( function create_oois (line 259) | def create_oois( FILE: rocky/tools/permissions.py class CanRecalculateBits (line 6) | class CanRecalculateBits(BasePermission): method has_permission (line 7) | def has_permission(self, request, view) -> bool: class CanSetKatalogusSettings (line 11) | class CanSetKatalogusSettings(BasePermission): method has_permission (line 12) | def has_permission(self, request, view) -> bool: FILE: rocky/tools/serializers.py class OrganizationSerializer (line 7) | class OrganizationSerializer(TagSerializer): class Meta (line 8) | class Meta: class OrganizationSerializerReadOnlyCode (line 13) | class OrganizationSerializerReadOnlyCode(TagSerializer): class Meta (line 14) | class Meta: class ToOrganizationSerializer (line 20) | class ToOrganizationSerializer(Serializer): FILE: rocky/tools/templatetags/form_extra.py function with_form_attr (line 7) | def with_form_attr(field, form_id): FILE: rocky/tools/templatetags/media_with_nonce.py function media_with_nonce (line 8) | def media_with_nonce(context): function media_js_with_nonce (line 14) | def media_js_with_nonce(context): FILE: rocky/tools/templatetags/ooi_extra.py function get_item (line 18) | def get_item(dictionary, key): function get_key (line 23) | def get_key(array, key): function sum_list (line 28) | def sum_list(array): function get_scan_levels (line 33) | def get_scan_levels() -> list[str]: function ooi_types_to_strings (line 38) | def ooi_types_to_strings(ooi_types: set[type[OOI]]) -> list["str"]: function get_type (line 43) | def get_type(x: Any) -> Any: function ooi_url (line 48) | def ooi_url(routename: str, ooi_id: str, organization_code: str, **kwarg... function is_finding (line 53) | def is_finding(ooi: OOI) -> bool: function is_finding_type (line 58) | def is_finding_type(ooi: OOI) -> bool: function get_type_name (line 63) | def get_type_name(instance): function url_replace (line 68) | def url_replace(context, field, value): function index (line 75) | def index(indexable, i): function pretty_json (line 80) | def pretty_json(obj: dict) -> str: function human_readable (line 85) | def human_readable(reference_string: str) -> str: function clearance_level (line 90) | def clearance_level(ooi: OOI) -> ScanLevel: function ooi_type (line 98) | def ooi_type(reference_string: str) -> str: function get_datetime (line 103) | def get_datetime(date_str: str) -> datetime: function get_first_seen (line 108) | def get_first_seen(occurrences: dict) -> datetime: function get_user_full_name (line 114) | def get_user_full_name(ooi: OOI) -> str: FILE: rocky/tools/view_helpers.py function convert_date_to_datetime (line 16) | def convert_date_to_datetime(d: date) -> datetime: function get_mandatory_fields (line 21) | def get_mandatory_fields(request: HttpRequest, params: list[str] | None ... function generate_job_id (line 37) | def generate_job_id(): function url_with_querystring (line 41) | def url_with_querystring(path: str, doseq: bool = False, /, **kwargs: An... function get_ooi_url (line 58) | def get_ooi_url(routename: str, ooi_id: str, organization_code: str, **k... function existing_ooi_type (line 71) | def existing_ooi_type(ooi_type: str) -> bool: class Breadcrumb (line 78) | class Breadcrumb(TypedDict): class BreadcrumbsMixin (line 83) | class BreadcrumbsMixin: method build_breadcrumbs (line 86) | def build_breadcrumbs(self) -> list[Breadcrumb]: method get_context_data (line 89) | def get_context_data(self, **kwargs): class Step (line 96) | class Step(TypedDict): class StepsMixin (line 101) | class StepsMixin: method get_current_step (line 106) | def get_current_step(self): method set_current_stepper_url (line 111) | def set_current_stepper_url(self, url): method build_steps (line 114) | def build_steps(self) -> list[Step]: method get_context_data (line 117) | def get_context_data(self, **kwargs): class OrganizationBreadcrumbsMixin (line 126) | class OrganizationBreadcrumbsMixin(BreadcrumbsMixin): class OrganizationDetailBreadcrumbsMixin (line 130) | class OrganizationDetailBreadcrumbsMixin(BreadcrumbsMixin): method build_breadcrumbs (line 133) | def build_breadcrumbs(self) -> list[Breadcrumb]: class OrganizationMemberBreadcrumbsMixin (line 142) | class OrganizationMemberBreadcrumbsMixin(BreadcrumbsMixin): method build_breadcrumbs (line 145) | def build_breadcrumbs(self) -> list[Breadcrumb]: class ObjectsBreadcrumbsMixin (line 154) | class ObjectsBreadcrumbsMixin(BreadcrumbsMixin): method build_breadcrumbs (line 157) | def build_breadcrumbs(self) -> list[Breadcrumb]: class PostRedirect (line 166) | class PostRedirect(HttpResponseRedirectBase): FILE: rocky/tools/viewsets.py class OrganizationViewSet (line 20) | class OrganizationViewSet(viewsets.ModelViewSet): method get_serializer_class (line 32) | def get_serializer_class(self): method destroy (line 38) | def destroy(self, request, *args, **kwargs): method indemnification (line 61) | def indemnification(self, request, pk=None): method set_indemnification (line 77) | def set_indemnification(self, request, pk=None): method recalculate_bits (line 92) | def recalculate_bits(self, request, pk=None): method clone_katalogus_settings (line 103) | def clone_katalogus_settings(self, request, pk=None): FILE: scripts/development/backport.py function get_pr_num_from_message (line 13) | def get_pr_num_from_message(message): function get_commit_and_pr (line 21) | def get_commit_and_pr(repo, commit_or_pr): function parse_args (line 49) | def parse_args(): function main (line 58) | def main():