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)
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)
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)
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)
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)
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)
def about(): logged = False if 'logged_in' in session: logged = session['logged_in'] data = { 'logged': logged, } return render_template('about', **data)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
def auth_login_redirect(): return render_template('login-redirect', config=config)
def stuff(): return render_template('stuff/index', {})
def scenarios(): return render_template('overview', config=config)
def url_home(): data = stats() return render_template('home', **data)
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)
def url_about(): data = about() return render_template('about', **data)
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)
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)
def auth_login_custom(): return render_template('login-custom', config=config)
def custom(): return render_template('custom', {"msg": "Custom"})
def auth_profile(): if 'user' not in session: return redirect(url_for('scenarios')) return make_response( render_template('profile', user=session['user'], config=config))
def url_home(): data = {} return render_template('home', **data)