paramiko ds
This commit is contained in:
		| @@ -11,7 +11,7 @@ import sys | |||||||
| import os | import os | ||||||
| import ssl | import ssl | ||||||
| import socket | import socket | ||||||
| from datetime import datetime | from datetime import datetime, timezone | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from typing import Dict, Optional, Tuple | from typing import Dict, Optional, Tuple | ||||||
| import paramiko | import paramiko | ||||||
| @@ -45,7 +45,7 @@ class CertificateManager: | |||||||
|                 cert = x509.load_pem_x509_certificate(cert_data, default_backend()) |                 cert = x509.load_pem_x509_certificate(cert_data, default_backend()) | ||||||
|                 logger.debug(f"Loaded certificate from {cert_path}") |                 logger.debug(f"Loaded certificate from {cert_path}") | ||||||
|                 logger.debug(f"Certificate subject: {cert.subject}") |                 logger.debug(f"Certificate subject: {cert.subject}") | ||||||
|                 logger.debug(f"Certificate expires: {cert.not_valid_after}") |                 logger.debug(f"Certificate expires: {cert.not_valid_after_utc}") | ||||||
|                 return cert |                 return cert | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             logger.error(f"Failed to load certificate from {cert_path}: {e}") |             logger.error(f"Failed to load certificate from {cert_path}: {e}") | ||||||
| @@ -72,7 +72,7 @@ class CertificateManager: | |||||||
|                     der_cert = ssock.getpeercert(binary_form=True) |                     der_cert = ssock.getpeercert(binary_form=True) | ||||||
|                     cert = x509.load_der_x509_certificate(der_cert, default_backend()) |                     cert = x509.load_der_x509_certificate(der_cert, default_backend()) | ||||||
|                     logger.debug(f"Retrieved certificate from {url}") |                     logger.debug(f"Retrieved certificate from {url}") | ||||||
|                     logger.debug(f"Certificate expires: {cert.not_valid_after}") |                     logger.debug(f"Certificate expires: {cert.not_valid_after_utc}") | ||||||
|                     return cert |                     return cert | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             logger.warning(f"Failed to retrieve certificate from {url}: {e}") |             logger.warning(f"Failed to retrieve certificate from {url}: {e}") | ||||||
| @@ -102,8 +102,12 @@ class CertificateManager: | |||||||
|         try: |         try: | ||||||
|             subject = cert.subject.rfc4514_string() |             subject = cert.subject.rfc4514_string() | ||||||
|             issuer = cert.issuer.rfc4514_string() |             issuer = cert.issuer.rfc4514_string() | ||||||
|             valid_from = cert.not_valid_before |             valid_from = cert.not_valid_before_utc | ||||||
|             valid_to = cert.not_valid_after |             valid_to = cert.not_valid_after_utc | ||||||
|  |              | ||||||
|  |             # Convert to naive datetime for comparison | ||||||
|  |             now = datetime.now(timezone.utc) | ||||||
|  |             days_left = (valid_to - now).days | ||||||
|              |              | ||||||
|             return f""" |             return f""" | ||||||
| Certificate Info: | Certificate Info: | ||||||
| @@ -111,7 +115,7 @@ Certificate Info: | |||||||
|   Issuer: {issuer} |   Issuer: {issuer} | ||||||
|   Valid From: {valid_from} |   Valid From: {valid_from} | ||||||
|   Valid To: {valid_to} |   Valid To: {valid_to} | ||||||
|   Days Until Expiry: {(valid_to - datetime.now()).days} |   Days Until Expiry: {days_left} | ||||||
| """ | """ | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             return f"Unable to extract certificate info: {e}" |             return f"Unable to extract certificate info: {e}" | ||||||
| @@ -136,13 +140,12 @@ class SSHManager: | |||||||
|             logger.debug(f"Connecting to {self.username}@{self.hostname}:{self.port}") |             logger.debug(f"Connecting to {self.username}@{self.hostname}:{self.port}") | ||||||
|             logger.debug(f"Using SSH key: {self.key_path}") |             logger.debug(f"Using SSH key: {self.key_path}") | ||||||
|              |              | ||||||
|             # Try to load different key types |             # Try to load different key types (DSS removed in paramiko 3.0+) | ||||||
|             private_key = None |             private_key = None | ||||||
|             key_types = [ |             key_types = [ | ||||||
|                 ('RSA', paramiko.RSAKey), |                 ('RSA', paramiko.RSAKey), | ||||||
|                 ('Ed25519', paramiko.Ed25519Key), |                 ('Ed25519', paramiko.Ed25519Key), | ||||||
|                 ('ECDSA', paramiko.ECDSAKey), |                 ('ECDSA', paramiko.ECDSAKey), | ||||||
|                 ('DSS', paramiko.DSSKey), |  | ||||||
|             ] |             ] | ||||||
|              |              | ||||||
|             for key_name, key_class in key_types: |             for key_name, key_class in key_types: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mateusz Gruszczyński
					Mateusz Gruszczyński