mikrotik check cert
This commit is contained in:
		| @@ -744,25 +744,44 @@ class CertPusher: | ||||
|             upload_needed = True | ||||
|              | ||||
|             if check_first: | ||||
|                 if not ssh.check_remote_certificate(remote_cert_path, source_cert): | ||||
|                     upload_needed = False | ||||
|                 elif check_url: | ||||
|                     logger.info(f"SSH check failed. Trying URL: {check_url}") | ||||
|                 # Try SSH check first | ||||
|                 ssh_check_passed = not ssh.check_remote_certificate(remote_cert_path, source_cert) | ||||
|                  | ||||
|                 # If SSH says certificates match, double-check with URL if provided | ||||
|                 if ssh_check_passed and check_url: | ||||
|                     logger.info(f"SSH check passed. Verifying via URL: {check_url}") | ||||
|                     remote_cert = self.cert_manager.get_cert_from_url(check_url) | ||||
|                     if remote_cert and self.cert_manager.compare_certificates(source_cert, remote_cert): | ||||
|                         logger.info("✓ Certificate up to date via URL. Skipping.") | ||||
|                      | ||||
|                     if remote_cert: | ||||
|                         if self.cert_manager.compare_certificates(source_cert, remote_cert): | ||||
|                             logger.info("✓ URL check confirms: Certificates match. Skipping.") | ||||
|                             upload_needed = False | ||||
|                         else: | ||||
|                             logger.warning("⚠ URL check disagrees with SSH check!") | ||||
|                             logger.warning("Certificates differ via URL. Upload needed.") | ||||
|                             upload_needed = True | ||||
|                     else: | ||||
|                         logger.warning("Could not retrieve cert via URL. Trusting SSH check.") | ||||
|                         upload_needed = False | ||||
|                 elif ssh_check_passed: | ||||
|                     # SSH check passed, no URL to verify | ||||
|                     upload_needed = False | ||||
|                 else: | ||||
|                     # SSH check failed, upload needed | ||||
|                     upload_needed = True | ||||
|              | ||||
|             if not upload_needed: | ||||
|                 ssh.disconnect() | ||||
|                 self.stats['skipped'] += 1 | ||||
|                 return True | ||||
|              | ||||
|             # Upload certificate | ||||
|             if not ssh.upload_file(source_cert_path, remote_cert_path): | ||||
|                 ssh.disconnect() | ||||
|                 self.stats['failed'] += 1 | ||||
|                 return False | ||||
|              | ||||
|             # Upload key if specified | ||||
|             if self.config.has_option(section, 'remote_key_path'): | ||||
|                 remote_key_path = self.config.get(section, 'remote_key_path') | ||||
|                 source_key_path = self.get_key_path(section, source_cert_path) | ||||
| @@ -770,12 +789,14 @@ class CertPusher: | ||||
|                 if os.path.exists(source_key_path): | ||||
|                     ssh.upload_file(source_key_path, remote_key_path) | ||||
|              | ||||
|             # Additional files | ||||
|             if self.config.has_option(section, 'additional_files'): | ||||
|                 for file_pair in self.config.get(section, 'additional_files').split(','): | ||||
|                     if ':' in file_pair: | ||||
|                         local, remote = file_pair.strip().split(':', 1) | ||||
|                         ssh.upload_file(local, remote) | ||||
|              | ||||
|             # Post-upload command | ||||
|             if post_upload_command: | ||||
|                 logger.info("Executing post-upload command") | ||||
|                 ssh.execute_command(post_upload_command) | ||||
| @@ -790,6 +811,7 @@ class CertPusher: | ||||
|             self.stats['failed'] += 1 | ||||
|             return False | ||||
|  | ||||
|      | ||||
|     def run(self): | ||||
|         """Main execution""" | ||||
|         logger.info("="*60) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Mateusz Gruszczyński
					Mateusz Gruszczyński