Skip to content
Snippets Groups Projects
Select Git revision
  • 32fb9d345e66dd062756af6f968af765d26b44a5
  • master default protected
  • dev
  • appimage
  • fix_gitlab
  • fixappveyor
  • gitlab
  • fix_ci
  • fix_dbus_error
  • fix_ci_osx
  • sakia020
  • fix_travis#1105
  • feature/backend
  • check_uniq_node_by_endpoints
  • qt5.7
  • feature/agent_architecture
  • translations
  • pyqt5.6
  • qtwebengine
  • pyinstaller
  • landscape
  • 0.53.2
  • 0.53.1
  • 0.53.0
  • 0.52.0
  • 0.51.1
  • 0.51.0
  • 0.50.5
  • 0.50.4
  • 0.50.3
  • 0.50.2
  • 0.50.1
  • 0.50.0
  • 0.33.0rc7
  • 0.33.0rc6
  • 0.33.0rc5
  • 0.33.0rc4
  • 0.33.0rc3
  • 0.33.0rc2
  • 0.33.0rc1
  • 0.32.10post1
41 results

password_asker.py

Blame
  • password_asker.py 2.01 KiB
    '''
    Created on 24 dec. 2014
    
    @author: inso
    '''
    
    import logging
    import unicodedata
    import re
    
    from PyQt5.QtWidgets import QDialog, QMessageBox
    
    from ..gen_resources.password_asker_uic import Ui_PasswordAskerDialog
    
    
    class PasswordAskerDialog(QDialog, Ui_PasswordAskerDialog):
    
        '''
        A dialog to get password.
        '''
    
        def __init__(self, account):
            '''
            Constructor
            '''
            super().__init__()
            self.setupUi(self)
            self.account = account
            self.password = ""
            self.remember = False
    
        def exec_(self):
            if not self.remember:
                super().exec_()
                pwd = self.password
                if not self.remember:
                    self.password = ""
                return pwd
            else:
                self.setResult(QDialog.Accepted)
                return self.password
    
        def accept(self):
            password = self.edit_password.text()
    
            if detect_non_printable(password):
                QMessageBox.warning(self, "Bad password",
                                    "Non printable characters in password",
                                    QMessageBox.Ok)
                return False
    
            if not self.account.check_password(password):
                QMessageBox.warning(self, "Failed to get private key",
                                    "Wrong password typed. Cannot open the private key",
                                    QMessageBox.Ok)
                return False
    
            self.remember = self.check_remember.isChecked()
            self.password = password
            self.edit_password.setText("")
            logging.debug("Password is valid")
            super().accept()
    
        def reject(self):
            self.edit_password.setText("")
            logging.debug("Cancelled")
            self.setResult(QDialog.Accepted)
            self.password = ""
            super().reject()
    
    
    def detect_non_printable(data):
        control_chars = ''.join(map(chr, list(range(0, 32)) + list(range(127, 160))))
        control_char_re = re.compile('[%s]' % re.escape(control_chars))
        if control_char_re.search(data):
            return True