Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AlpacaMax
GitHub Repository: AlpacaMax/Shadow-Browser
Path: blob/master/app/main.py
249 views
1
from flask import *
2
import requests
3
import os
4
5
app = Flask(__name__)
6
7
SECRET = os.environ.get("SECRET")
8
HOSTNAME = os.environ.get("HOSTNAME")
9
10
11
def validate_token(token, hashes, secret):
12
api_url = "https://api.coinhive.com/token/verify"
13
14
data = {
15
'token': token,
16
'hashes': hashes,
17
'secret': secret
18
}
19
20
r = requests.post(api_url, data)
21
22
return r.text.find('true') > 0
23
24
25
def get_page(url):
26
return requests.get(url).text
27
28
29
@app.route("/")
30
def index():
31
host = HOSTNAME
32
info = get_page("http://docker_api/browsers_info")
33
info_list = info.split("#")
34
avail = info_list[0]
35
inuse = info_list[1]
36
per_avail = info_list[2]
37
per_inuse = info_list[3]
38
return render_template('index.html', hostname=host,
39
available=avail,
40
inuse=inuse,
41
per_available=per_avail,
42
per_inuse=per_inuse)
43
44
45
@app.route("/get_browser/<token>")
46
def get_browser(token):
47
if validate_token(str(token), 256, SECRET):
48
out = get_page("http://docker_api/run_chrome?duration=" + str(300))
49
out_list = out.split("#")
50
hostname = out_list[0]
51
port = out_list[1]
52
password = out_list[2]
53
return render_template('launch.html', hostname=hostname, port=port, password=password)
54
else:
55
return "Invalid token! Please play fair!"
56
57
58
@app.route("/helloworld")
59
def hello():
60
return get_page('http://docker_api/')
61
62
63
if __name__ == "__main__":
64
# Only for debugging while developing
65
app.run(host='0.0.0.0', debug=True, port=80)
66
67