paramiko ds
This commit is contained in:
		| @@ -11,7 +11,7 @@ import sys | ||||
| import os | ||||
| import ssl | ||||
| import socket | ||||
| from datetime import datetime | ||||
| from datetime import datetime, timezone | ||||
| from pathlib import Path | ||||
| from typing import Dict, Optional, Tuple | ||||
| import paramiko | ||||
| @@ -45,7 +45,7 @@ class CertificateManager: | ||||
|                 cert = x509.load_pem_x509_certificate(cert_data, default_backend()) | ||||
|                 logger.debug(f"Loaded certificate from {cert_path}") | ||||
|                 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 | ||||
|         except Exception as 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) | ||||
|                     cert = x509.load_der_x509_certificate(der_cert, default_backend()) | ||||
|                     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 | ||||
|         except Exception as e: | ||||
|             logger.warning(f"Failed to retrieve certificate from {url}: {e}") | ||||
| @@ -102,8 +102,12 @@ class CertificateManager: | ||||
|         try: | ||||
|             subject = cert.subject.rfc4514_string() | ||||
|             issuer = cert.issuer.rfc4514_string() | ||||
|             valid_from = cert.not_valid_before | ||||
|             valid_to = cert.not_valid_after | ||||
|             valid_from = cert.not_valid_before_utc | ||||
|             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""" | ||||
| Certificate Info: | ||||
| @@ -111,7 +115,7 @@ Certificate Info: | ||||
|   Issuer: {issuer} | ||||
|   Valid From: {valid_from} | ||||
|   Valid To: {valid_to} | ||||
|   Days Until Expiry: {(valid_to - datetime.now()).days} | ||||
|   Days Until Expiry: {days_left} | ||||
| """ | ||||
|         except Exception as 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"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 | ||||
|             key_types = [ | ||||
|                 ('RSA', paramiko.RSAKey), | ||||
|                 ('Ed25519', paramiko.Ed25519Key), | ||||
|                 ('ECDSA', paramiko.ECDSAKey), | ||||
|                 ('DSS', paramiko.DSSKey), | ||||
|             ] | ||||
|              | ||||
|             for key_name, key_class in key_types: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Mateusz Gruszczyński
					Mateusz Gruszczyński