def update_users(self, spam_protection=False, reprocess_username=None): """ Process new profile updates from the webapp """ counter = 0 self.registrar_server.reset_flag() for new_user in self.updates.find(no_cursor_timeout=True): user = get_db_user_from_id(new_user, self.users) if user is None: continue # for spam protection if check_banned_email(user['email']): if spam_protection: log.debug("Deleting spam: %s, %s" % (user['email'], user['username'])) self.updates.remove({"user_id": new_user['user_id']}) else: log.debug("Need to delete %s, %s" % (user['email'], user['username'])) continue # mode for reprocessing a single user, ignore others if reprocess_username is not None: if user['username'] != reprocess_username: #log.debug("Ignoring: %s" % user['username']) continue fqu = user['username'] + "." + DEFAULT_NAMESPACE btc_address = nmc_to_btc_address(user['namecoin_address']) data_value = convert_profile_format(user) encrypted_privkey = new_user['encrypted_private_key'] hex_privkey = bip38_decrypt(str(encrypted_privkey), WALLET_SECRET) if nameRegistered(fqu): if profilePublished(fqu, data_value): log.debug("Profile match, removing: %s" % fqu) self.updates.remove({"user_id": new_user['user_id']}) refresh_resolver(user['username']) else: log.debug("Processing: %s, %s" % (fqu, user['email'])) try: self.registrar_server.process_subsidized_nameop( fqu, owner_privkey=hex_privkey, profile=data_value, nameop='update') except Exception as e: log.debug(e) else: log.debug("Not registered: %s" % fqu)
def transfer_users(self, spam_protection=False, reprocess_username=None): """ Process new transfer from the webapp """ counter = 0 self.registrar_server.reset_flag() for new_user in self.exports.find(no_cursor_timeout=True): user = get_db_user_from_id(new_user, self.users) if user is None: continue # add spam protection here # mode for reprocessing a single user, ignore others if reprocess_username is not None: if user['username'] != reprocess_username: continue fqu = user['username'] + "." + DEFAULT_NAMESPACE transfer_address = new_user['recipient_address'] try: encrypted_privkey = new_user['encrypted_private_key'] hex_privkey = bip38_decrypt(str(encrypted_privkey), WALLET_SECRET) except: log.debug("no private key") #self.exports.remove({"user_id": new_user['user_id']}) else: log.debug("To export: %s to %s" % (fqu, transfer_address)) if nameRegistered(fqu): if ownerName(fqu, transfer_address): log.debug("Name transferred, removing: %s" % fqu) self.exports.remove({"user_id": new_user['user_id']}) refresh_resolver(user['username']) else: log.debug("Processing: %s, %s" % (fqu, user['email'])) #try: self.registrar_server.process_subsidized_nameop( fqu, owner_privkey=hex_privkey, transfer_address=transfer_address, nameop='transfer', profile="") #except Exception as e: # log.debug(e) else: log.debug("Not registered: %s" % fqu)
def update_users(self, spam_protection=False, reprocess_username=None): """ Process new profile updates from the webapp """ counter = 0 self.registrar_server.reset_flag() for new_user in self.updates.find(no_cursor_timeout=True): user = get_db_user_from_id(new_user, self.users) if user is None: continue # for spam protection if check_banned_email(user['email']): if spam_protection: log.debug("Deleting spam: %s, %s" % (user['email'], user['username'])) self.updates.remove({"user_id": new_user['user_id']}) else: log.debug("Need to delete %s, %s" % (user['email'], user['username'])) continue # mode for reprocessing a single user, ignore others if reprocess_username is not None: if user['username'] != reprocess_username: #log.debug("Ignoring: %s" % user['username']) continue fqu = user['username'] + "." + DEFAULT_NAMESPACE btc_address = nmc_to_btc_address(user['namecoin_address']) data_value = convert_profile_format(user) encrypted_privkey = new_user['encrypted_private_key'] hex_privkey = bip38_decrypt(str(encrypted_privkey), WALLET_SECRET) if nameRegistered(fqu): if profilePublished(fqu, data_value): log.debug("Profile match, removing: %s" % fqu) self.updates.remove({"user_id": new_user['user_id']}) refresh_resolver(user['username']) else: log.debug("Processing: %s, %s" % (fqu, user['email'])) try: self.registrar_server.process_subsidized_nameop(fqu, owner_privkey=hex_privkey, profile=data_value, nameop='update') except Exception as e: log.debug(e) else: log.debug("Not registered: %s" % fqu)
def transfer_users(self, spam_protection=False, reprocess_username=None): """ Process new transfer from the webapp """ counter = 0 self.registrar_server.reset_flag() for new_user in self.exports.find(no_cursor_timeout=True): user = get_db_user_from_id(new_user, self.users) if user is None: continue # add spam protection here # mode for reprocessing a single user, ignore others if reprocess_username is not None: if user['username'] != reprocess_username: continue fqu = user['username'] + "." + DEFAULT_NAMESPACE transfer_address = new_user['recipient_address'] try: encrypted_privkey = new_user['encrypted_private_key'] hex_privkey = bip38_decrypt(str(encrypted_privkey), WALLET_SECRET) except: log.debug("no private key") #self.exports.remove({"user_id": new_user['user_id']}) else: log.debug("To export: %s to %s" % (fqu, transfer_address)) if nameRegistered(fqu): if ownerName(fqu, transfer_address): log.debug("Name transferred, removing: %s" % fqu) self.exports.remove({"user_id": new_user['user_id']}) refresh_resolver(user['username']) else: log.debug("Processing: %s, %s" % (fqu, user['email'])) #try: self.registrar_server.process_subsidized_nameop(fqu, owner_privkey=hex_privkey, transfer_address=transfer_address, nameop='transfer', profile="") #except Exception as e: # log.debug(e) else: log.debug("Not registered: %s" % fqu)
def sweep_btc(transfer_user, LIVE=False): user_id = transfer_user['user_id'] new_user = new_users.find_one({"_id": user_id}) if new_user is None: return old_user = old_users.find_one({'username': new_user['username']}) if old_user is None: return new_btc_address = new_user['bitcoin_address'] old_btc_address = json.loads(old_user['profile'])['bitcoin']['address'] wif_pk = bip38_decrypt(str(transfer_user['encrypted_private_key']), WALLET_SECRET) keypair = BitcoinKeypair.from_private_key(wif_pk) if old_btc_address == keypair.address(): balance = fetch_balance(old_btc_address) if balance == float(0): return False log.debug(new_user['username']) log.debug("old btc address: " + old_btc_address) bitcoind.importprivkey(keypair.wif_pk()) if LIVE: log.debug("sending " + str(balance) + " to " + new_btc_address) tx = bitcoind.sendtoaddress(new_btc_address, balance) log.debug(tx) else: log.debug("need to send " + str(balance) + " to " + new_btc_address) log.debug("final balance: %s", balance) log.debug('-' * 5) return True return False