Exemplo n.º 1
0
def url_faucet():
    balance = host.call('getbalance')['bitcoin']
    address = request.args.get('address')

    if address is None:
        data = {'result': 'missing address', 'balance': balance}
        data['form'] = True
        return render_template('faucet', **data)

    amount = 0.001
    data = {'result': faucet(address, amount), 'balance': balance}
    data['form'] = False
    return render_template('faucet', **data)
Exemplo n.º 2
0
def stats():
    os.system(
        'python flowchart.py -u "https://amp-beta.blockstream.com" -t "{}" -a "{}" -f "flowchart"'
        .format(secToken, secUuid))
    os.system('mv flowchart.gv.png static/flowchart.png')
    os.system('rm flowchart.gv')

    activities = requests.get('https://amp-beta.blockstream.com/api/assets/{}/activities'.format(secUuid), \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    random_list = [
        random.choice(string.ascii_letters + string.digits) for n in range(32)
    ]
    random_str = "".join(random_list)

    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'random': random_str,
        'activities': activities,
        'logged': logged,
    }
    return render_template('stats', **data)
Exemplo n.º 3
0
def url_transaction():
    txid = request.args.get('txid')
    data = {
        'txid': txid,
        'result': json.dumps(transaction(txid), indent=4, sort_keys=True)
    }
    return render_template('transaction', **data)
Exemplo n.º 4
0
def url_utils():
    ip = request.headers.get('X-Forwarded-For', request.remote_addr)
    command = request.args.get('command')
    if command == 'opreturn':
        text = request.args.get('text')
        data = {'result_opreturn': opreturn(text)}
        data['form_opreturn'] = False
        data['form_test'] = True
        data['form_broadcast'] = True

    elif command == 'test':
        tx = request.args.get('tx')
        data = {'result_test': test(tx)}
        data['form_opreturn'] = True
        data['form_test'] = False
        data['form_broadcast'] = True

    elif command == 'broadcast':
        tx = request.args.get('tx')
        data = {'result_broadcast': broadcast(tx)}
        data['form_opreturn'] = True
        data['form_test'] = True
        data['form_broadcast'] = False

    else:
        data = {}
        data['form_opreturn'] = True
        data['form_test'] = True
        data['form_broadcast'] = True

    return render_template('utils', **data)
Exemplo n.º 5
0
def utxos():
    command = request.args.get('command')
    txid = request.args.get('txid')
    vout = request.args.get('vout')

    if command is not None:
        if command == 'lock' and txid is not None and vout is not None:
            res = requests.post('https://amp-beta.blockstream.com/api/assets/{}/utxos/blacklist'.format(secUuid), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps([{'txid': txid, 'vout': int(vout)}])).json()

        if command == 'unlock' and txid is not None and vout is not None:
            res = requests.post('https://amp-beta.blockstream.com/api/assets/{}/utxos/whitelist'.format(secUuid), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps([{'txid': txid, 'vout': int(vout)}])).json()

    utxos = requests.get('https://amp-beta.blockstream.com/api/assets/{}/utxos'.format(secUuid), \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'utxos': utxos,
        'logged': logged,
    }
    return render_template('utxos', **data)
Exemplo n.º 6
0
def home():
    tokens = []
    token = requests.get('https://securities.blockstream.com/api/assets/df36e373-82c9-4412-a993-50c4ae12db6f', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    tokens.append(token)
    data = {
        'tokens': tokens,
    }
    return render_template('home', **data)
Exemplo n.º 7
0
def about():
    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'logged': logged,
    }
    return render_template('about', **data)
Exemplo n.º 8
0
def url_block():
    height = request.args.get('height')
    res_block = block(height)
    data = {
        'block': height,
        'result': json.dumps(res_block, indent=4, sort_keys=True),
        'transaction_list': res_block['tx']
    }
    return render_template('block', **data)
Exemplo n.º 9
0
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != adminUsername or request.form[
                'password'] != adminPassword:
            error = 'Invalid Credentials. Please try again.'
        else:
            session['logged_in'] = True
            return redirect(url_for('utxos'))
    return render_template('login', error=error)
Exemplo n.º 10
0
def home():
    html = render_template(
        "header",
        {"file_extension": "html"},
        refresh=False,
        # css_styles=[open(
        #     "/Users/michael/Projects/flake-explorer/src/templates/css/style.css").read()]
    )
    html += render_template(
        "index",
        {"file_extension": "html"},
        server_timestamp=datetime.datetime.utcnow(),
        refresh=False,
        is_page_zero=True,
        blocks=[
            dict(
                height=random.randint(1, 1000000),
                age=datetime.datetime.utcnow().strftime("%H:%m:%S"),
                time_delta="",
                hash=hashlib.md5(str(random.random()).encode()).hexdigest(),
                notx=random.randint(1, 10),
                fees=random.random(),
                outputx=random.random(),
                mixin_range=random.randint(1, 12),
                blksize=random.random()),
        ],
        page_no=0,
        total_page_no=1)
    html += render_template(
        "footer",
        {"file_extension": "html"},
        **dict(
            git_branch_name="git-branch",
            last_git_commit_date=datetime.datetime.utcnow(),
            last_git_commit_hash=hashlib.md5(
                str(random.random()).encode()).hexdigest(),
            api="API",
            monero_version_full="v0-14-1"
        )
    )
    return html
Exemplo n.º 11
0
def home():
    tokens = []
    token = requests.get('https://amp-beta.blockstream.com/api/assets/{}'.format(secUuid), \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    tokens.append(token)

    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'tokens': tokens,
        'logged': logged,
    }
    return render_template('home', **data)
Exemplo n.º 12
0
 def get_content_text_html(self):
     for element in self.soup.select('body > *'):
         self.docdict['body'] += str(element)
     if not self.is_404 and self.keep_document_styles:
         # Do not use styles for 404
         if settings.AUTODETECT_EXTERNAL_FONTS:
             auto_generated_css = self.soup.head.select('style')[0].text
             self.docdict['external_fonts'] = \
                 [settings.GOOGLE_FONTS_PATTERN.format(item.replace(' ', settings.GOOGLE_FONTS_WHITESPACE))
                     for item in utilities.sift_gfonts(utilities.extract_fonts(auto_generated_css))]
         self.docdict['style'] = utilities.css_wrap_doc_container_id(
             auto_generated_css)
     else:
         self.docdict['status'] = 404
     return render_template('base', **self.docdict)
Exemplo n.º 13
0
def status():
    print(betaToken)
    beta_info = requests.get('https://securities-beta.blockstream.com/api/info', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(betaToken)}).json()
    beta_changelog = requests.get('https://securities-beta.blockstream.com/api/changelog', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(betaToken)}).json()
    prod_info = requests.get('https://securities.blockstream.com/api/info', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    prod_changelog = requests.get('https://securities.blockstream.com/api/changelog', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    data = {
        'beta_info': json.dumps(beta_info, indent=4),
        'beta_changelog': json.dumps(beta_changelog, indent=4),
        'prod_info': json.dumps(prod_info, indent=4),
        'prod_changelog': json.dumps(prod_changelog, indent=4),
    }
    return render_template('status', **data)
Exemplo n.º 14
0
def stats():
    os.system(
        'python flowchart.py -u "https://securities.blockstream.com" -t "{}" -a "df36e373-82c9-4412-a993-50c4ae12db6f" -f "flowchart"'
        .format(secToken))
    os.system('mv flowchart.gv.png static/flowchart.png')
    os.system('rm flowchart.gv')

    activities = requests.get('https://securities.blockstream.com/api/assets/df36e373-82c9-4412-a993-50c4ae12db6f/activities', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    random_list = [
        random.choice(string.ascii_letters + string.digits) for n in range(32)
    ]
    random_str = "".join(random_list)

    data = {
        'random': random_str,
        'activities': activities,
    }
    return render_template('stats', **data)
Exemplo n.º 15
0
def balance():
    confirmed_balance = requests.get('https://amp-beta.blockstream.com/api/assets/{}/balance'.format(secUuid), \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()['confirmed_balance']

    # convert to pandas dataframe
    data = np.array([(e['GAID'], e['owner'], e['amount'])
                     for e in confirmed_balance])
    df = pd.DataFrame({
        'gaid': data[:, 0],
        'owner': data[:, 1],
        'amount': data[:, 2]
    })
    df.replace(to_replace=[None], value=np.nan, inplace=True)

    # plot distribution
    plt1 = ggplot(df, aes(x='gaid', y='amount', fill='gaid')) + \
        geom_col() +   \
        coord_flip() + \
        scale_fill_brewer(type='div', palette="Spectral") + \
        labs(title ='Balance', x = 'GAID', y = 'Tokens')

    ggsave(filename="static/gaid_balance.png",
           plot=plt1,
           device='png',
           dpi=300)

    random_list = [
        random.choice(string.ascii_letters + string.digits) for n in range(32)
    ]
    random_str = "".join(random_list)

    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'random': random_str,
        'confirmed_balance': confirmed_balance,
        'logged': logged,
    }
    return render_template('balance', **data)
Exemplo n.º 16
0
def url_issuer():
    command = request.args.get('command')
    if command == 'asset':
        asset_amount = int(request.args.get('asset_amount'))
        asset_address = request.args.get('asset_address')
        token_amount = int(request.args.get('token_amount'))
        token_address = request.args.get('token_address')
        issuer_pubkey = request.args.get('pubkey')
        name = request.args.get('name')
        ticker = request.args.get('ticker')
        precision = request.args.get('precision')
        domain = request.args.get('domain')
        data = issuer(asset_amount, asset_address, token_amount, token_address,
                      issuer_pubkey, name, ticker, precision, domain)
        data['form'] = False
        data['domain'] = domain
        data['name'] = name
    else:
        data = {}
        data['form'] = True
    return render_template('issuer', **data)
Exemplo n.º 17
0
def utxos():
    command = request.args.get('command')
    txid = request.args.get('txid')
    vout = request.args.get('vout')

    if command is not None:
        if command == 'lock' and txid is not None and vout is not None:
            res = requests.post('https://securities.blockstream.com/api/assets/df36e373-82c9-4412-a993-50c4ae12db6f/utxos/blacklist', \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps([{'txid': txid, 'vout': int(vout)}])).json()

        if command == 'unlock' and txid is not None and vout is not None:
            res = requests.post('https://securities.blockstream.com/api/assets/df36e373-82c9-4412-a993-50c4ae12db6f/utxos/whitelist', \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps([{'txid': txid, 'vout': int(vout)}])).json()

    utxos = requests.get('https://securities.blockstream.com/api/assets/df36e373-82c9-4412-a993-50c4ae12db6f/utxos', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    data = {
        'utxos': utxos,
    }
    return render_template('utxos', **data)
Exemplo n.º 18
0
def url_explorer():
    elements = 120
    start = request.args.get('start')
    max = host.call('getblockcount')

    try:
        start = int(start)
    except:
        start = max

    if start > max:
        start = max
    last = start - elements

    if (last < 0):
        last = 0

    data = {
        'blocks_list': explorer(start, last),
        'prev': start - elements,
        'next': start + elements
    }
    return render_template('explorer', **data)
Exemplo n.º 19
0
def auth_login_redirect():
    return render_template('login-redirect', config=config)
Exemplo n.º 20
0
 def stuff():
     return render_template('stuff/index', {})
Exemplo n.º 21
0
def scenarios():
    return render_template('overview', config=config)
Exemplo n.º 22
0
def url_home():
    data = stats()
    return render_template('home', **data)
Exemplo n.º 23
0
def investor():
    form = True
    status = ''

    if request.method == 'POST':
        form = False
        if request.form['command'] == 'investor':
            status = requests.post('https://amp-beta.blockstream.com/api/registered_users/add', \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps({'name': request.form['name'], 'GAID': request.form['gaid'], 'is_company': False})).json()

        elif request.form['command'] == 'assignment':
            status = requests.post('https://amp-beta.blockstream.com/api/assets/{}/assignments/create'.format(secUuid), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}, \
                data=json.dumps({"assignments": [{"registered_user": int(request.form['id']), "amount": int(request.form['amount']), "ready_for_distribution": True, "vesting_timestamp": None}]})).json()

    else:
        command = request.args.get('command')
        id = request.args.get('id')
        if command == 'add':
            status = requests.put('https://amp-beta.blockstream.com/api/categories/23/registered_users/{}/add'.format(id), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
        elif command == 'remove':
            status = requests.put('https://amp-beta.blockstream.com/api/categories/23/registered_users/{}/remove'.format(id), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
        elif command == 'delete_assignment':
            status = requests.delete('https://amp-beta.blockstream.com/api/assets/{}/assignments/{}/delete'.format(secUuid, id), \
                headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()

    investors = []
    res = requests.get('https://amp-beta.blockstream.com/api/registered_users', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    cat = requests.get('https://amp-beta.blockstream.com/api/categories/23', \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    for r in res:
        kyc = (r['id'] in cat['registered_users'])
        investors.append({
            'id': r['id'],
            'name': r['name'],
            'gaid': r['GAID'],
            'kyc': kyc
        })

    assignments = []
    res = requests.get('https://amp-beta.blockstream.com/api/assets/{}/assignments'.format(secUuid), \
        headers={'content-type': 'application/json', 'Authorization': 'token {}'.format(secToken)}).json()
    for r in res:
        assignments.append({
            'id': r['id'],
            'registered_user': r['registered_user'],
            'amount': r['amount'],
            'receiving_address': r['receiving_address'],
            'is_distributed': r['is_distributed']
        })

    logged = False
    if 'logged_in' in session:
        logged = session['logged_in']

    data = {
        'form': True,
        'logged': logged,
        'status': status,
        'investors': investors,
        'assignments': assignments,
    }
    return render_template('investor', **data)
Exemplo n.º 24
0
def url_about():
    data = about()
    return render_template('about', **data)
Exemplo n.º 25
0
def pages(slug):
    """
    export FLASK_APP=views.py
    flask run

    Per rimuovere dipendenze:
    pip-autoremove pyquery


    :return:
    """
    is_404 = False
    db = models.DocuwebDb()
    dbsession = db.sessionmaker()
    menu = utilities.menu_items(dbsession=dbsession, slug=slug)
    newdoc = dict(style='',
                  body='',
                  nav='',
                  title='',
                  status=200,
                  is_front=False,
                  menu_items=menu)
    try:
        # exclude special path
        assert slug not in [settings.SLUG_404,
                            settings.FRONT_SLUG]  # settings.FRONT_SLUG,
        # get current page from slug from database
        current_page = dbsession.query(models.Page).get(slug)
        assert current_page
    except AssertionError:
        if slug == settings.FRONT_SLUG:
            newdoc['is_front'] = True
            current_page = dbsession.query(models.Page).get(
                settings.FRONT_SLUG)
        else:
            is_404 = True
            current_page = dbsession.query(models.Page).get(settings.SLUG_404)
    newdoc['title'] = utilities.head_title(page=current_page,
                                           dbsession=dbsession)
    try:
        outf = io.BytesIO()
        docs_directory = settings.DOCUMENT_DIRECTORY
        filename = current_page.file
        # get the full document file path
        fullfilepath = path.join(docs_directory, filename)
        odhandler = ODF2XHTML()
        # convert OpenDocument to XHTML with python3-odfpy
        result = odhandler.odf2xhtml(fullfilepath)
        outf.write(result.encode('utf-8'))
        html_doc = outf.getvalue().decode('utf-8')
        # Parse the HTML document to get body and style.
        # Different results based on Accept: text/html | application/json
        print(request.headers['Accept'])
        rqc = ServeRequestedContent(
            soup=BeautifulSoup(html_doc, 'html.parser'),
            request_headers=request.headers['Accept'].split(',')[0].split(
                ';')[0],
            docdict=newdoc,
            is_404=is_404)
        return rqc.render()
    except TypeError:
        # document not specified, error
        newdoc['status'] = 500
        return render_template('base', **newdoc)
Exemplo n.º 26
0
def url_faucet():
    balance_amp = 0
    global s, subaccount
    try:
        result = requests.get(f'{ampUrl}assets/{ampUuid}',
                              headers={
                                  'content-type': 'application/json',
                                  'Authorization': f'token {ampToken}'
                              }).json()
        assetid = result['asset_id']
        balance_amp = s.get_balance({
            'subaccount': subaccount,
            'num_confs': 0
        }).resolve()[assetid]
    except Exception as e:
        pass
    balance = host.call('getbalance')['bitcoin']
    balance_test = host.call(
        'getbalance'
    )['38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5'] * 100000
    address = request.args.get('address')
    asset = request.args.get('action')
    ip = request.headers.get('X-Forwarded-For', request.remote_addr)

    if address is None:
        data = {
            'result': 'missing address',
            'balance': balance,
            'balance_test': balance_test,
            'balance_amp': balance_amp
        }
        data['form'] = True
        data['form_test'] = True
        data['form_amp'] = True
        return render_template('faucet', **data)

    if asset == 'lbtc':
        amount = 0.001
        data = {
            'result': faucet(address, amount),
            'balance': balance,
            'balance_test': balance_test,
            'balance_amp': balance_amp
        }
        data['form'] = False
        data['form_test'] = True
        data['form_amp'] = True
    elif asset == 'test':
        amount = 0.00005000
        data = {
            'result_test': faucet_test(address, amount),
            'balance': balance,
            'balance_test': balance_test,
            'balance_amp': balance_amp
        }
        data['form'] = True
        data['form_test'] = False
        data['form_amp'] = True
    elif asset == 'amp':
        amount = 1
        data = {
            'result_amp': faucet_amp(address, amount),
            'balance': balance,
            'balance_test': balance_test,
            'balance_amp': balance_amp
        }
        data['form'] = True
        data['form_test'] = True
        data['form_amp'] = False
    return render_template('faucet', **data)
Exemplo n.º 27
0
def auth_login_custom():
    return render_template('login-custom', config=config)
Exemplo n.º 28
0
 def custom():
     return render_template('custom', {"msg": "Custom"})
Exemplo n.º 29
0
def auth_profile():
    if 'user' not in session:
        return redirect(url_for('scenarios'))
    return make_response(
        render_template('profile', user=session['user'], config=config))
Exemplo n.º 30
0
def url_home():
    data = {}
    return render_template('home', **data)