def test_unlock_keyring(self): gkr.lock_sync(self.keyring) info = gkr.get_info_sync(self.keyring) assert(info.get_is_locked()) self.openkeyring.unlock_keyring() info = gkr.get_info_sync(self.keyring) assert(not info.get_is_locked())
def password(self): n = self._password if n is None: if gtkpresence: try: keyring = gnomekeyring.get_default_keyring_sync() keyring_info = gnomekeyring.get_info_sync(keyring) if keyring_info.get_is_locked(): nof_tries = 3 for i in range(nof_tries): keyring_pass = getpass("Enter password to unlock your default keychain: ") try: gnomekeyring.unlock_sync(keyring, keyring_pass) break except gnomekeyring.DeniedError: if i + 1 == nof_tries: sys.stderr.write("\nFailed to unlock keychain (%s times)\n" % (i + 1)) else: sys.stderr.write("\nInvalid password, try again...\n") items = gnomekeyring.find_items_sync( gnomekeyring.ITEM_NETWORK_PASSWORD, {"server": self.server, "protocol": "ftp", "user": self.username}, ) if len(items) > 0: n = items[0].secret except gnomekeyring.DeniedError: sys.stderr.write("\nGnome keyring error : Access denied ..\n") except gnomekeyring.NoMatchError: sys.stderr.write("\nGnome keyring error : No credential for %s..\n" % self.server) except Exception, msg: sys.stderr.write("\nGnome keyring error : %s\n" % (msg)) sys.stderr.flush() if n is None: n = getpass("Enter password for ftp://%s@%s: " % (self.username, self.server)) self._password = n
def password(self): n = self._password if n is None: if gtkpresence: try: keyring = gnomekeyring.get_default_keyring_sync() keyring_info = gnomekeyring.get_info_sync(keyring) if keyring_info.get_is_locked(): nof_tries = 3 for i in range(nof_tries): keyring_pass = getpass('Enter password to unlock your default keychain: ') try: gnomekeyring.unlock_sync(keyring, keyring_pass) break except gnomekeyring.DeniedError: if i+1==nof_tries: sys.stderr.write('\nFailed to unlock keychain (%s times)\n' % (i+1)) else: sys.stderr.write("\nInvalid password, try again...\n") items = gnomekeyring.find_items_sync(gnomekeyring.ITEM_NETWORK_PASSWORD, {"server": self.server, "protocol": "ftp", "user": self.username}) if len(items) > 0: n = items[0].secret except gnomekeyring.DeniedError: sys.stderr.write("\nGnome keyring error : Access denied ..\n") except gnomekeyring.NoMatchError: sys.stderr.write("\nGnome keyring error : No credential for %s..\n" % self.server) except Exception, msg: sys.stderr.write("\nGnome keyring error : %s\n" % (msg)) sys.stderr.flush() if n is None: n = getpass('Enter password for ftp://%s@%s: ' % (self.username, self.server)) self._password = n
def connect(self): try: auth = netrc().authenticators(self.host) # TODO check if the host exists in netrc except IOError as msgio: if gtkpresence: try: keyring = gnomekeyring.get_default_keyring_sync() keyring_info = gnomekeyring.get_info_sync(keyring) if keyring_info.get_is_locked(): keyring_pass = getpass('Enter password to unlock your ' 'keychain [%s]: ' % (keyring)) try: gnomekeyring.unlock_sync(keyring, keyring_pass) except Exception as msg: sys.stderr.write("\nUnable to unlock your " "keychain: %s\n" % msg) else: _log().debug("+ [%s] unlocked." % keyring) itempass = gnomekeyring.ITEM_NETWORK_PASSWORD pars = { "server": self.host, "protocol": "ftp", "user": self.user } items = gnomekeyring.find_items_sync( itempass, pars) if len(items) > 0: ftp = ftplib.FTP(self.host, self.user, items[0].secret) else: raise Exception('gnomekeyring', 'NoMatchError') except gnomekeyring.DeniedError: sys.stderr.write("\nGnome keyring error : " "Access denied ..\n" "netrc error: %s\n" % (msgio)) sys.exit(1) except gnomekeyring.NoMatchError: sys.stderr.write("\nGnome keyring error : " "No credential for %s..\n" "netrc error: %s\n" % (self.host, msgio)) sys.exit(1) except Exception as msg: sys.stderr.write("\nGnome keyring error : %s\n" "netrc error: %s\n" % (msg, msgio)) sys.exit(1) else: assert self.user == auth[0] ftp = ftplib.FTP() ftp.connect(self.host, self.port) ftp.login(auth[0], auth[2]) try: ftp.cwd(self.path) except ftplib.error_perm: ftp.mkd(self.path) ftp.cwd(self.path) self.ftp = ftp self.dirs = set()
def get_keyrings(): l = [] for name in gkr.list_keyring_names_sync(): locked = gkr.get_info_sync(name).get_is_locked() keyring = {"id": name, "locked": locked} l.append(keyring) return l
def __init__(self): GLib.set_application_name('mailnag') self.was_locked = False # True if Dialog shown. Required for Sortorder problem self.keyring_password = '' self.defaultKeyring = gnomekeyring.get_default_keyring_sync() if self.defaultKeyring == None: self.defaultKeyring = 'login' while gnomekeyring.get_info_sync(self.defaultKeyring).get_is_locked(): # Keyring locked? self.message_response = 'cancel' # default response for message dialog try: try: gnomekeyring.unlock_sync(self.defaultKeyring, \ self.keyring_password) except gnomekeyring.IOError: self.show_keyring_dialog() # get keyring password Gtk.main() # wait until dialog is closed result = gnomekeyring.unlock_sync(self.defaultKeyring, \ self.keyring_password) except gnomekeyring.IOError: self.show_message(_('Failed to unlock Keyring "{0}".\nWrong password.\n\nDo you want to try again?').format(self.defaultKeyring)) Gtk.main() # wait until dialog is closed if self.message_response == 'cancel': exit(1) # close application (else: continue getting password)
def __update_info(self): """Update keyring status information""" self._info = keyring.get_info_sync(self.KEYRING_NAME) # update icon self.__update_icon()
def unlock_keyring(self): info = gkr.get_info_sync(self.keyring) if info.get_is_locked(): found_pos = self._auto_unlock_key_position() item_info = gkr.item_get_info_sync(self.default_keyring, found_pos) gkr.unlock_sync(self.keyring, item_info.get_secret())
#!/usr/bin/env python import gnomekeyring import getpass locked=gnomekeyring.get_info_sync(gnomekeyring.get_default_keyring_sync()).get_is_locked() if(locked): gnomekeyring.unlock_sync(None, getpass.getpass('Password: '******'already unlocked'
def __init__(self, keyring = 'passwords'): self.keyring = 'passwords' if gk.get_info_sync(self.keyring).get_is_locked(): print "The %s keyring is locked, please type the password" % self.keyring password = getpass() gk.unlock_sync(self.keyring, password)
import gnomekeyring print gnomekeyring.get_info_sync( gnomekeyring.get_default_keyring_sync()).get_is_locked()
serv.login(login, password) serv.select(inbox) data = str(serv.status(inbox, "(MESSAGES UNSEEN)")) serv.close() serv.logout() # prepare regular expression p = re.compile("(.*UNSEEN |\) '\]\))") return int(p.sub("", data)) glib.set_application_name(APP_NAME) keyrings = gk.list_keyring_names_sync() if KEYRING_NAME not in keyrings: print "Keyring", KEYRING_NAME, "not found" exit() if gk.get_info_sync(KEYRING_NAME).get_is_locked(): message = "Give password for keyring" while True: password = get_password(message) if password is not None: try: gk.unlock_sync(KEYRING_NAME, password) break except gk.IOError: message = "Password is wrong. Try again." else: exit() GMAIL_PASS = search_secret(KEYRING_NAME, GMAIL_LOGIN) # OWA_PASS = search_secret(KEYRING_NAME, OWA_LOGIN) mailserver = "imap4-3.uni.lu"
def get_keyring_info(keyring_id): locked = gkr.get_info_sync(keyring_id).get_is_locked() return {"locked": locked}
def unlock_app(self): inf = gk.get_info_sync(self._app_name) if inf.get_is_locked(): gk.unlock_sync(self._app_name, self._app_pass)