Beispiel #1
0
    def dispatch_request(self):
        config = app.config['yada_config']
        mongo = app.config['yada_mongo']
        if request.json:
            data = request.json
            comment_id = data.get('_id')
        else:
            data = request.form
            comment_id = json.loads(data.get('_id'))

        res = BU.get_comment_reacts(config, mongo, [comment_id])
        out = []
        for x in res:
            try:
                res1 = BU.get_transaction_by_rid(config,
                                                 mongo,
                                                 x['rid'],
                                                 wif=config.wif,
                                                 rid=True)
                if res1:
                    x['username'] = res1['relationship']['their_username']
                out.append(x)
            except:
                pass
        return json.dumps(out)
Beispiel #2
0
def fcm_token():
    try:
        token = request.json.get('token')
        print token
        rid = request.json.get('rid')
        txn = BU.get_transaction_by_rid(rid, rid=True)
        Mongo.site_db.fcmtokens.update({'rid': rid}, {
            'rid': rid,
            'token': token
        },
                                       upsert=True)
        return '', 200
    except Exception as e:
        return '', 400
Beispiel #3
0
def show_friend_request():
    authed_user = get_logged_in_user()

    transaction = BU.get_transaction_by_rid(request.args.get('rid'),
                                            rid=True,
                                            raw=True)

    requested_transaction = BU.get_transaction_by_rid(
        transaction['requester_rid'], rid=True)
    dict_data = {
        'bulletin_secret':
        requested_transaction['relationship']['bulletin_secret'],
        'requested_rid': transaction['requested_rid'],
        'requester_rid': transaction['requester_rid']
    }
    data = json.dumps(dict_data)
    qr_code = make_qr(data)
    return render_template(
        'accept-friend-request.html',
        qrcode=qr_code,
        data=json.dumps(dict_data, indent=4),
        rid=requested_transaction['rid'],
        bulletin_secret=requested_transaction['relationship']
        ['bulletin_secret'])
Beispiel #4
0
def fcm_token():
    try:
        config = current_app.config['yada_config']
        mongo = current_app.config['yada_mongo']
        token = request.json.get('token')
        print token
        rid = request.json.get('rid')
        txn = BU.get_transaction_by_rid(rid, rid=True)
        mongo.site_db.fcmtokens.update({'rid': rid}, {
            'rid': rid,
            'token': token
        },
                                       upsert=True)
        return '', 200
    except Exception as e:
        return '', 400
Beispiel #5
0
def show_user():
    authed_user = get_logged_in_user()
    user = BU.get_transaction_by_rid(request.args['rid'], rid=True)
    for output in user['outputs']:
        if output['to'] != Config.address:
            to = output['to']
    dict_data = {
        'bulletin_secret': user['relationship']['bulletin_secret'],
        'requested_rid': user['rid'],
        'requester_rid': authed_user['rid'],
        'to': to
    }
    data = json.dumps(dict_data)
    qr_code = make_qr(data)
    return render_template(
        'show-user.html',
        qrcode=qr_code,
        data=json.dumps(dict_data, indent=4),
        bulletin_secret=user['relationship']['bulletin_secret'],
        to=to)
Beispiel #6
0
    def dispatch_request(self):
        config = app.config['yada_config']
        mongo = app.config['yada_mongo']
        res = mongo.db.signed_transactions.find_one(
            {'hash': request.json.get('hash')})
        if res:
            return 'no', 400
        try:
            rid = TU.generate_rid(config, request.json.get('bulletin_secret'))
            my_entry_for_relationship = BU.get_transaction_by_rid(
                config,
                mongo,
                rid,
                config.wif,
                rid=True,
                my=True,
                public_key=config.public_key)
            their_entry_for_relationship = BU.get_transaction_by_rid(
                config,
                mongo,
                rid,
                rid=True,
                raw=True,
                theirs=True,
                public_key=config.public_key)
            verified = verify_signature(
                base64.b64decode(request.json.get('bulletin_secret')),
                my_entry_for_relationship['relationship']['their_username'],
                their_entry_for_relationship['public_key'].decode('hex'))
            if not verified:
                return 'no', 400
            verified = verify_signature(
                base64.b64decode(request.json.get('id')),
                request.json.get('hash'),
                their_entry_for_relationship['public_key'].decode('hex'))

            address = str(
                P2PKHBitcoinAddress.from_pubkey(
                    their_entry_for_relationship['public_key'].decode('hex')))
            found = False
            for x in BU.get_wallet_unspent_transactions(
                    config, mongo, address, [request.json.get('input')]):
                if request.json.get('input') == x['id']:
                    found = True

            if found:
                res = mongo.db.signed_transactions.find(
                    {'input': request.json.get('input')})
                if res.count():
                    return 'already signed this input', 400
            else:
                return 'no transactions with this input found', 400

            if verified:
                transaction_signature = TU.generate_signature_with_private_key(
                    config.private_key, request.json.get('hash'))
                signature = {
                    'signature': transaction_signature,
                    'hash': request.json.get('hash'),
                    'bulletin_secret': request.json.get('bulletin_secret'),
                    'input': request.json.get('input'),
                    'id': request.json.get('id')
                }
                mongo.db.signed_transactions.insert(signature)
                if '_id' in signature:
                    del signature['_id']
                return json.dumps(signature)
            else:
                return 'no', 400
        except Exception as e:
            return json.dumps({'status': 'error', 'msg': e}), 400