"""Dialogues utilises au moment de la connexion : saisie de secret et confirmation de cle d'hote.""" from __future__ import annotations from PySide6.QtWidgets import QInputDialog, QLineEdit, QMessageBox, QWidget def ask_secret(parent: QWidget, title: str, label: str) -> tuple[str, bool]: text, ok = QInputDialog.getText(parent, title, label, QLineEdit.Password) return text, ok def confirm_host_key(parent: QWidget, hostname: str, key_type: str, fingerprint: str) -> bool: msg = ( f"L'empreinte de la cle du serveur '{hostname}' n'est pas connue.\n\n" f"Type : {key_type}\n" f"Empreinte : {fingerprint}\n\n" "Verifiez cette empreinte aupres de l'administrateur du serveur si vous n'etes pas certain.\n" "Faire confiance a cette cle et se connecter ?" ) answer = QMessageBox.question( parent, "Nouvelle cle d'hote detectee", msg, QMessageBox.Yes | QMessageBox.No, QMessageBox.No, ) return answer == QMessageBox.Yes def confirm_host_key_change(parent: QWidget, hostname: str, key_type: str, old_fingerprint: str, new_fingerprint: str) -> bool: msg = ( f"La cle presentee par le serveur '{hostname}' ne correspond plus a celle enregistree.\n\n" f"Ancienne empreinte : {old_fingerprint}\n" f"Nouvelle empreinte : {new_fingerprint}\n\n" "C'est generalement normal si ce serveur a une adresse IP attribuee par DHCP et " "qu'elle a ete reutilisee par une autre machine, ou si le serveur a ete reinstalle. " "Mais cela peut aussi indiquer une interception de la connexion (attaque de type " "'man-in-the-middle') : verifiez la nouvelle empreinte si vous avez un doute.\n\n" "Remplacer l'ancienne cle enregistree et se connecter ?" ) answer = QMessageBox.warning( parent, "Cle d'hote modifiee", msg, QMessageBox.Yes | QMessageBox.No, QMessageBox.No, ) return answer == QMessageBox.Yes