Ejemplo n.º 1
0
    def update_db_entry(self,
                        auth,
                        name,
                        pub,
                        bio,
                        check,
                        privacy,
                        pin=None,
                        password=None):
        dbc = self.settings["local_store"]
        with dbc.lock:
            session, owner_of_cid = dbc.get_by_id_ig(pub)
            if owner_of_cid and owner_of_cid.name != name:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_DUPE_ID)
                return 0

            session, mus = dbc.get_ig(name, session)
            if not mus:
                mus = database.User()
            elif mus.public_key != auth:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_NAME_TAKEN)
                return 0

            mus.name = name
            mus.public_key = pub
            mus.checksum = check
            mus.privacy = privacy
            mus.timestamp = datetime.datetime.now()
            mus.sig = self.settings["crypto_core"].sign(mus)
            mus.bio = bio
            mus.pin = pin
            if password:
                mus.password = password
            ok = dbc.update_atomic(mus, session)
            if not ok:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_DUPE_ID)
                return 0
            if hooks:
                hooks.did_update_record(self.settings["hooks_state"],
                                        database.StaleUser(mus))
            session.close()
        return 1
Ejemplo n.º 2
0
    def update_db_entry(self, auth, name, pub, bio, check, privacy, pin=None,
                        password=None):
        dbc = self.settings["local_store"]
        with dbc.lock:
            session, owner_of_cid = dbc.get_by_id_ig(pub)
            if owner_of_cid and owner_of_cid.name != name:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_DUPE_ID)
                return 0

            session, mus = dbc.get_ig(name, session)
            if not mus:
                mus = database.User()
            elif mus.public_key != auth:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_NAME_TAKEN)
                return 0

            mus.name = name
            mus.public_key = pub
            mus.checksum = check
            mus.privacy = privacy
            mus.timestamp = datetime.datetime.now()
            mus.sig = self.settings["crypto_core"].sign(mus)
            mus.bio = bio
            mus.pin = pin
            if password:
                mus.password = password
            ok = dbc.update_atomic(mus, session)
            if not ok:
                session.close()
                self.set_status(400)
                self.json_payload(error_codes.ERROR_DUPE_ID)
                return 0
            if hooks:
                hooks.did_update_record(self.settings["hooks_state"],
                                        database.StaleUser(mus))
            session.close()
        return 1
Ejemplo n.º 3
0
#!/usr/bin/env python3
"""
* tool_resigner.py
* Author: stal, stqism; April 2014
* Copyright (c) 2014 Zodiac Labs.
* Further licensing information: see LICENSE.
"""
import yuu
import database
import hooks
import json

with open("config.json", "r") as config_file:
    cfg = json.load(config_file)

crypto_core = yuu.CryptoCore()
local_store = database.Database(cfg["database_url"])
hooks_state = hooks.init(cfg, local_store)

for record in local_store.iterate_all_users(mutates=1):
    print("Signing record for {0}.".format(record.name))
    record.sig = crypto_core.sign(record)
    hooks.did_update_record(hooks_state, record)