diff --git a/parsedmarc/cli.py b/parsedmarc/cli.py index 4361499..dcef5ec 100644 --- a/parsedmarc/cli.py +++ b/parsedmarc/cli.py @@ -1278,7 +1278,6 @@ def _main(): exit(1) logger.info("Starting parsedmarc") - if opts.save_aggregate or opts.save_forensic or opts.save_smtp_tls: try: @@ -1296,6 +1295,11 @@ def _main(): es_aggregate_index = "{0}{1}".format(prefix, es_aggregate_index) es_forensic_index = "{0}{1}".format(prefix, es_forensic_index) es_smtp_tls_index = "{0}{1}".format(prefix, es_smtp_tls_index) + elastic_timeout_value = ( + float(opts.elasticsearch_timeout) + if opts.elasticsearch_timeout is not None + else 60.0 + ) elastic.set_hosts( opts.elasticsearch_hosts, use_ssl=opts.elasticsearch_ssl, @@ -1303,7 +1307,7 @@ def _main(): username=opts.elasticsearch_username, password=opts.elasticsearch_password, api_key=opts.elasticsearch_api_key, - timeout=opts.elasticsearch_timeout, + timeout=elastic_timeout_value, ) elastic.migrate_indexes( aggregate_indexes=[es_aggregate_index], @@ -1328,6 +1332,11 @@ def _main(): os_aggregate_index = "{0}{1}".format(prefix, os_aggregate_index) os_forensic_index = "{0}{1}".format(prefix, os_forensic_index) os_smtp_tls_index = "{0}{1}".format(prefix, os_smtp_tls_index) + opensearch_timeout_value = ( + float(opts.opensearch_timeout) + if opts.opensearch_timeout is not None + else 60.0 + ) opensearch.set_hosts( opts.opensearch_hosts, use_ssl=opts.opensearch_ssl, @@ -1335,7 +1344,7 @@ def _main(): username=opts.opensearch_username, password=opts.opensearch_password, api_key=opts.opensearch_api_key, - timeout=opts.opensearch_timeout, + timeout=opensearch_timeout_value, ) opensearch.migrate_indexes( aggregate_indexes=[os_aggregate_index], @@ -1717,7 +1726,6 @@ def _main(): if mailbox_connection and opts.mailbox_watch: logger.info("Watching for email - Quit with ctrl-c") - try: watch_inbox( mailbox_connection=mailbox_connection, diff --git a/parsedmarc/elastic.py b/parsedmarc/elastic.py index 4dce431..b109d1f 100644 --- a/parsedmarc/elastic.py +++ b/parsedmarc/elastic.py @@ -266,12 +266,12 @@ class AlreadySaved(ValueError): def set_hosts( hosts: Union[str, list[str]], *, - use_ssl: Optional[bool] = False, + use_ssl: bool = False, ssl_cert_path: Optional[str] = None, username: Optional[str] = None, password: Optional[str] = None, api_key: Optional[str] = None, - timeout: Optional[float] = 60.0, + timeout: float = 60.0, ): """ Sets the Elasticsearch hosts to use @@ -379,8 +379,8 @@ def save_aggregate_report_to_elasticsearch( index_suffix: Optional[str] = None, index_prefix: Optional[str] = None, monthly_indexes: Optional[bool] = False, - number_of_shards: Optional[int] = 1, - number_of_replicas: Optional[int] = 0, + number_of_shards: int = 1, + number_of_replicas: int = 0, ): """ Saves a parsed DMARC aggregate report to Elasticsearch @@ -706,9 +706,9 @@ def save_smtp_tls_report_to_elasticsearch( report: dict[str, Any], index_suffix: Optional[str] = None, index_prefix: Optional[str] = None, - monthly_indexes: Optional[bool] = False, - number_of_shards: Optional[int] = 1, - number_of_replicas: Optional[int] = 0, + monthly_indexes: bool = False, + number_of_shards: int = 1, + number_of_replicas: int = 0, ): """ Saves a parsed SMTP TLS report to Elasticsearch diff --git a/parsedmarc/kafkaclient.py b/parsedmarc/kafkaclient.py index 5263846..e27c9b9 100644 --- a/parsedmarc/kafkaclient.py +++ b/parsedmarc/kafkaclient.py @@ -46,7 +46,7 @@ class KafkaClient(object): ``$ConnectionString``, and the password is the Azure Event Hub connection string. """ - config = dict( + config: dict[str, Any] = dict( value_serializer=lambda v: json.dumps(v).encode("utf-8"), bootstrap_servers=kafka_hosts, client_id="parsedmarc-{0}".format(__version__), diff --git a/parsedmarc/opensearch.py b/parsedmarc/opensearch.py index db60e2c..ca0ffe3 100644 --- a/parsedmarc/opensearch.py +++ b/parsedmarc/opensearch.py @@ -378,9 +378,9 @@ def save_aggregate_report_to_opensearch( aggregate_report: dict[str, Any], index_suffix: Optional[str] = None, index_prefix: Optional[str] = None, - monthly_indexes: Optional[bool] = False, - number_of_shards: Optional[int] = 1, - number_of_replicas: Optional[int] = 0, + monthly_indexes: bool = False, + number_of_shards: int = 1, + number_of_replicas: int = 0, ): """ Saves a parsed DMARC aggregate report to OpenSearch @@ -539,7 +539,7 @@ def save_forensic_report_to_opensearch( forensic_report: dict[str, Any], index_suffix: Optional[str] = None, index_prefix: Optional[str] = None, - monthly_indexes: Optional[bool] = False, + monthly_indexes: bool = False, number_of_shards: int = 1, number_of_replicas: int = 0, ): @@ -706,9 +706,9 @@ def save_smtp_tls_report_to_opensearch( report: dict[str, Any], index_suffix: Optional[str] = None, index_prefix: Optional[str] = None, - monthly_indexes: Optional[bool] = False, - number_of_shards: Optional[int] = 1, - number_of_replicas: Optional[int] = 0, + monthly_indexes: bool = False, + number_of_shards: int = 1, + number_of_replicas: int = 0, ): """ Saves a parsed SMTP TLS report to OpenSearch diff --git a/parsedmarc/utils.py b/parsedmarc/utils.py index 35929ed..5b38fbc 100644 --- a/parsedmarc/utils.py +++ b/parsedmarc/utils.py @@ -238,7 +238,7 @@ def timestamp_to_human(timestamp: int) -> str: def human_timestamp_to_datetime( - human_timestamp: str, *, to_utc: Optional[bool] = False + human_timestamp: str, *, to_utc: bool = False ) -> datetime: """ Converts a human-readable timestamp into a Python ``datetime`` object @@ -339,10 +339,10 @@ def get_ip_address_country( def get_service_from_reverse_dns_base_domain( base_domain, *, - always_use_local_file: Optional[bool] = False, + always_use_local_file: bool = False, local_file_path: Optional[str] = None, url: Optional[str] = None, - offline: Optional[bool] = False, + offline: bool = False, reverse_dns_map: Optional[ReverseDNSMap] = None, ) -> ReverseDNSService: """ @@ -425,11 +425,11 @@ def get_ip_address_info( *, ip_db_path: Optional[str] = None, reverse_dns_map_path: Optional[str] = None, - always_use_local_files: Optional[bool] = False, + always_use_local_files: bool = False, reverse_dns_map_url: Optional[str] = None, cache: Optional[ExpiringDict] = None, reverse_dns_map: Optional[ReverseDNSMap] = None, - offline: Optional[bool] = False, + offline: bool = False, nameservers: Optional[list[str]] = None, timeout: float = 2.0, ) -> IPAddressInfo: @@ -620,8 +620,8 @@ def convert_outlook_msg(msg_bytes: bytes) -> bytes: def parse_email( - data: Union[bytes, str], *, strip_attachment_payloads: Optional[bool] = False -): + data: Union[bytes, str], *, strip_attachment_payloads: bool = False +) -> dict: """ A simplified email parser