forked from arjun-krishna1/BitHolmes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
115 lines (90 loc) · 3.74 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from flask import *
import data, os
from ai_predictions import AddressClassifier
import qrcodefunctions as qrfunc
from rq import check_addr
from crytpoaddrverification import verify_bitcoin
from datetime import timedelta
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
CL = AddressClassifier()
app = Flask(__name__)
fraud_level = 0
app.secret_key = "7291"
app.permanent_session_lifetime = timedelta(minutes=10)
@app.route("/<address>", methods = ["GET"])
@app.route('/', methods = ["GET", "POST"])
def index(address = None):
global fraud_level
error_one = error_two = 0
pressed = lambda x: x in request.form
if address: #if address passed into the url
if verify_bitcoin(address):
fraud_level = check_addr(address)
return render_template("results.html", fraud_level = fraud_level)
else:
error_one = "That bitcoin public key was not found"
elif pressed('public-key-submit-qr') and request.form['public-key-input-qr']:
public_key_qr = request.form['public-key-input-qr']
if verify_bitcoin(public_key_qr):
return redirect("/qr/" + public_key_qr)
else:
error_two = "That bitcoin public key was not found"
elif pressed('public-key-submit') and request.form['public-key-input']: #if submit button is pressed
public_key = request.form['public-key-input']
if verify_bitcoin(public_key):
fraud_level = check_addr(public_key)
fraud_percentage = 0
if fraud_level == 3:
# 2
# DO DEEP LEARNING CHECK
is_fraud, fraud_percentage = CL.predict(public_key)
if is_fraud:
fraud_level = 2
print(fraud_level, is_fraud, fraud_percentage)
return render_template("results.html", fraud_level = fraud_level, fraud_percentage = fraud_percentage )
else:
error_one = "That bitcoin public key was not found"
return render_template("base.html", errors = [error_one, error_two])
@app.route("/qr/<address>", methods = ["GET"])
@app.route('/qr/', methods = ["GET"])
def qr(address = None):
error_two = 0
if address is None:
return redirect("/")
if verify_bitcoin(address):
qrfunc.delete_old_files()
qr_hash = qrfunc.make_website_link_qr(address, request.host_url)
location = url_for('static', filename = qr_hash)
else:
error_two = "That public key was not found"
return render_template("base.html", errors=[0, error_two])
return render_template("qr.html", location = location)
@app.route('/result/', methods = ["GET"])
def result():
return render_template("result.html")
@app.route("/reports/<address>", methods = ["GET"])
@app.route('/reports/', methods = ["GET", "POST"])
def reports(address = None):
error_one = 0
if 'report-btn-submit' in request.form and request.form['report-key-input']:
reported_public_key = request.form['report-key-input']
if verify_bitcoin(reported_public_key):
#DATABASE ADDITION LOCATION
return redirect("/")
else:
error_one = "That public key was not found"
return render_template("reports.html", errors = [error_one])
@app.context_processor
def override_url_for():
return dict(url_for=dated_url_for)
def dated_url_for(endpoint, **values):
if endpoint == "static":
filename = values.get('filename', None)
if filename:
path = os.path.join(app.root_path, endpoint, filename)
values['q'] = int(os.stat(path).st_mtime)
return url_for(endpoint, **values)
if __name__ == "__main__":
# app.run(host='localhost', debug=False, port=8000, threaded=True)
app.run(debug=True)