Esempio n. 1
0
    def add_keypair(self, public_key, private_key, site, user, passphrase):
        """
        add a keypair into the gpg key database
        """
        try:
            result1 = self.gpg.import_keys(b64decode(public_key))
            result2 = self.gpg.import_keys(b64decode(private_key))
        except TypeError as error:
            getLogger(__name__).critical("add_keypair TypeError " + str(error))
        # make sure this is a key _pair_
        try:
            assert result1.fingerprints[0] == result2.fingerprints[0]
        except (IndexError, AssertionError) as error:
            getLogger(__name__).exception(
                'add_keypair IndexError/AssertionError: ' + str(error))
            return None
        fingerprint = result1.fingerprints[0]

        if self.is_passphrase_valid(passphrase=passphrase,
                                    fingerprint=fingerprint):
            old_fingerprint = self.get_fingerprint(site, user)
            if not old_fingerprint:
                sql = "INSERT INTO keys (site, user, fingerprint) VALUES (?, ?, ?)"
                database_execute(sql, (site, user, fingerprint))
            else:
                sql = "UPDATE keys SET SITE=? WHERE fingerprint=?"
                database_execute(sql, (site, old_fingerprint))
                if fingerprint != old_fingerprint:
                    getLogger(__name__).warn('updating %s fingerprint to %s' %
                                             (user, fingerprint))
            return fingerprint
        else:
            return None
Esempio n. 2
0
 def generate(self, passphrase, site, user):
     """
     Generate a new 2048 bit GPG key and add it to the gpg manager.
     """
     data = self.gpg.gen_key_input(key_length=2048, passphrase=passphrase)
     dat = self.gpg.gen_key(data)
     fingerprint = dat.fingerprint
     sql = "INSERT INTO keys (site, user, fingerprint) VALUES (?, ?, ?);"
     database_execute(sql, (site, user, fingerprint))
     return fingerprint
Esempio n. 3
0
 def delete(self, index, save=False):
     """
     Delete item from list by 'index'
     :param index:
     :param save:
     :return:
     """
     item = self._list[index]
     localbox_client = LocalBox(url=item.url, label=item.label)
     localbox_client.delete(item.path)
     localbox_client.delete_share(item.id)
     sql = 'delete from keys where site = ? and user != ?'
     database_execute(sql, (item.label, item.user))
     del self._list[index]
     if save:
         self.save()
Esempio n. 4
0
def get_server_data(label=None):
    if label:
        sql = "SELECT label, url, picture FROM servers WHERE label='{}';".format(label)
    else:
        sql = "SELECT label, url, picture FROM servers;"
    cursor = database_execute(sql)
    return cursor
Esempio n. 5
0
    def add_public_key(self, site, user, public_key):
        """
        add a public key into the gpg key database
        """
        try:
            result1 = self.gpg.import_keys(b64decode(public_key))
            fingerprint = result1.fingerprints[0]

            sql = "INSERT INTO keys (site, user, fingerprint) VALUES (?, ?, ?)"
            database_execute(sql, (site, user, fingerprint))
            return fingerprint
        except TypeError as error:
            getLogger(__name__).critical("add_public_key TypeError " +
                                         str(error))
        except DatabaseError as error:
            getLogger(__name__).critical("add_public_key DatabaseError " +
                                         str(error))
Esempio n. 6
0
def delete_client_data(label):
    sql = 'delete from sites where site=?'
    database_execute(sql, (label, ))
    sql = 'delete from keys where site=?'
    database_execute(sql, (label, ))
Esempio n. 7
0
    def delete_for_label(self, label):

        sql = 'delete from keys where site = ?'
        database_execute(sql, (label, ))
        map(lambda i: self._list.remove(i),
            filter(lambda i: i.label == label, self._list))
Esempio n. 8
0
def create_server_data(server):
    sql = "INSERT INTO servers (label, url, picture) VALUES (?, ?, ?);"
    database_execute(sql, (server.label, server.url, server.picture))
Esempio n. 9
0
 def get_fingerprint(self, site, user):
     sql = "select fingerprint from keys where site = ? and user = ?"
     result = database_execute(sql, (site, user))
     if not len(result):
         return None
     return result[0][0]
Esempio n. 10
0
        getLogger(__name__).info("LocalBox Sync Version: %s (%s)",
                                 sync.__version__.VERSION_STRING,
                                 sync.__version__.git_version)

        signal.signal(signal.SIGINT, openfiles_ctrl.remove_all)
        signal.signal(signal.SIGTERM, openfiles_ctrl.remove_all)
        try:
            # only on Windows
            signal.signal(signal.CTRL_C_EVENT, openfiles_ctrl.remove_all)
        except:
            pass

        try:
            sql = 'SELECT token FROM sites'
            database_execute(sql)
        except DatabaseError:
            sql = 'ALTER TABLE sites ADD COLUMN TOKEN CHAR(255)'
            database_execute(sql)
            getLogger(__name__).debug('TOKEN column added to table SITES')

        if len(sys.argv) > 1:
            filename = ' '.join(sys.argv[1:])

            run_file_decryption(filename, memory)
        else:
            run_event_daemon()
            run_sync_daemon()

    finally:
        memory.destroy()