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
#!/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)