diff --git a/docs/source/usage.md b/docs/source/usage.md index 6a18b5f..ff7503c 100644 --- a/docs/source/usage.md +++ b/docs/source/usage.md @@ -171,8 +171,8 @@ The full set of configuration options are: - `check_timeout` - int: Number of seconds to wait for a IMAP IDLE response or the number of seconds until the next mail check (Default: `30`) - - `since` - str: Search for messages since certain time. (Examples: `5m|3h|2d|1w`) - Acceptable units - {"m":"minutes", "h":"hours", "d":"days", "w":"weeks"}. + - `since` - str: Search for messages since certain time. (Examples: `5m|3h|2d|1w`) + Acceptable units - {"m":"minutes", "h":"hours", "d":"days", "w":"weeks"}. Defaults to `1d` if incorrect value is provided. - `imap` - `host` - str: The IMAP server hostname or IP address @@ -240,7 +240,7 @@ The full set of configuration options are: group and use that as the group id. ```powershell - New-ApplicationAccessPolicy -AccessRight RestrictAccess + New-ApplicationAccessPolicy -AccessRight RestrictAccess -AppId "" -PolicyScopeGroupId "" -Description "Restrict access to dmarc reports mailbox." ``` @@ -344,17 +344,17 @@ The full set of configuration options are: - `timeout` - float: Connection timeout in seconds for TCP/TLS (Default: `5.0`) - `retry_attempts` - int: Number of retry attempts for failed connections (Default: `3`) - `retry_delay` - int: Delay in seconds between retry attempts (Default: `5`) - + **Example UDP configuration (default):** - + ```ini [syslog] server = syslog.example.com port = 514 ``` - + **Example TCP configuration:** - + ```ini [syslog] server = syslog.example.com @@ -363,9 +363,9 @@ The full set of configuration options are: timeout = 10.0 retry_attempts = 5 ``` - + **Example TLS configuration with server verification:** - + ```ini [syslog] server = syslog.example.com @@ -374,9 +374,9 @@ The full set of configuration options are: cafile_path = /path/to/ca-cert.pem timeout = 10.0 ``` - + **Example TLS configuration with mutual authentication:** - + ```ini [syslog] server = syslog.example.com @@ -394,7 +394,7 @@ The full set of configuration options are: credentials, None to disable (Default: `None`) - `token_file` - str: Path to save the token file (Default: `.token`) - + :::{note} credentials_file and token_file can be got with [quickstart](https://developers.google.com/gmail/api/quickstart/python).Please change the scope to `https://www.googleapis.com/auth/gmail.modify`. ::: @@ -494,7 +494,7 @@ Update the limit to 2k per example: PUT _cluster/settings { "persistent" : { - "cluster.max_shards_per_node" : 2000 + "cluster.max_shards_per_node" : 2000 } } ``` diff --git a/parsedmarc/syslog.py b/parsedmarc/syslog.py index bedda86..2d1c4c0 100644 --- a/parsedmarc/syslog.py +++ b/parsedmarc/syslog.py @@ -52,10 +52,10 @@ class SyslogClient(object): self.timeout = timeout self.retry_attempts = retry_attempts self.retry_delay = retry_delay - + self.logger = logging.getLogger("parsedmarc_syslog") self.logger.setLevel(logging.INFO) - + # Create the appropriate syslog handler based on protocol log_handler = self._create_syslog_handler( server_name, @@ -68,7 +68,7 @@ class SyslogClient(object): retry_attempts, retry_delay, ) - + self.logger.addHandler(log_handler) def _create_syslog_handler( @@ -110,24 +110,31 @@ class SyslogClient(object): # TLS protocol # Create SSL context ssl_context = ssl.create_default_context() - + # Configure server certificate verification if cafile_path: ssl_context.load_verify_locations(cafile=cafile_path) - + # Configure client certificate authentication if certfile_path and keyfile_path: ssl_context.load_cert_chain( certfile=certfile_path, keyfile=keyfile_path, ) - + elif certfile_path or keyfile_path: + # Warn if only one of the two required parameters is provided + self.logger.warning( + "Both certfile_path and keyfile_path are required for " + "client certificate authentication. Client authentication " + "will not be used." + ) + # Create TCP handler first handler = logging.handlers.SysLogHandler( address=(server_name, server_port), socktype=socket.SOCK_STREAM, ) - + # Wrap socket with TLS if hasattr(handler, "socket") and handler.socket: handler.socket = ssl_context.wrap_socket( @@ -135,9 +142,9 @@ class SyslogClient(object): server_hostname=server_name, ) handler.socket.settimeout(timeout) - + return handler - + except Exception as e: if attempt < retry_attempts: self.logger.warning(