File size: 3,774 Bytes
66ca64a
 
 
 
 
f0b744f
66ca64a
 
3f48fa2
66ca64a
9b1524f
66ca64a
f02b1de
66ca64a
 
 
 
 
 
 
f02b1de
66ca64a
 
 
 
 
 
 
 
dbec2e2
 
 
 
66ca64a
 
 
 
 
 
 
 
 
 
 
f02b1de
66ca64a
 
 
 
 
47ca12e
 
 
 
 
 
 
 
 
 
89d38c5
47ca12e
66ca64a
 
 
bbb9123
66ca64a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9b1524f
 
 
24452e2
9b1524f
66ca64a
f0b744f
 
 
 
29f3438
f0b744f
 
 
 
 
dbec2e2
66ca64a
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
import os
from flask import *
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

from routes.helpers import checkSignature, configFile
from routes import *

#initing
app = Flask(__name__)
VERSION = '1.0 build83'
app.config['JSON_AS_ASCII'] = False
limiter = Limiter(app=app, key_func=get_remote_address, default_limits=["5/minute"], storage_uri="memory://",)

#limiter
@limiter.request_filter
def ip_whitelist():
    try:
        if request.method == 'POST': signature = request.form['signature']
        else: signature = request.args['signature']
        return checkSignature(request, signature)
    except: return False
#error pages
@app.errorhandler(429)
def ratelimit_handler(e): return render_template('ratelimit.html')
@app.errorhandler(403)
def forbidden_handler(e): return render_template('forbidden.html')
@app.errorhandler(404)
def ratelimit_handler(e): return render_template('notfound.html')
@app.errorhandler(500)
def ratelimit_handler(e): return render_template('intervalservererror.html')
@app.errorhandler(502)
def ratelimit_handler(e): return render_template('badgateway.html')

#empty routes
@app.route('/yt/api/v1', methods=['GET', 'POST'])
@app.route('/recognize/api/v1', methods=['GET', 'POST'])
@app.route('/osu/api/v1', methods=['GET', 'POST'])
def emptyPath(): return {} 

@app.route('/yt/api/v1/<path:path>', methods=['GET', 'POST'])
@app.route('/recognize/api/v1/<path:path>', methods=['GET', 'POST'])
@app.route('/osu/api/v1/<path:path>', methods=['GET', 'POST'])
def emptyApiWA(path):  return {"status": "error", "error_code": 100, "error_details": "No method like that found"}
    
#icon
@app.route('/favicon.ico')
@limiter.exempt
def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')

###############
#SITE ROUTES
@app.route('/')
@limiter.exempt
def index(): return render_template('index.html') 
@app.route('/signatures/api/v1/get', methods=['GET', 'POST'])
@limiter.exempt
def signatureGen(): return siteRoutes.signatureGen(request)
@app.route('/system-info/api/v1/get', methods=['GET', 'POST'])
@limiter.exempt
def systemInfo(): return siteRoutes.systemInfo()
  
###############
#RECOGNIZE API
@app.route('/recognize/api/v1/voice', methods=['GET', 'POST'])
def recognizeVoice(): return recognizeApi.recognizeVoice(request)

###############
#YT SOUND API
@app.route('/yt/api/v1/search', methods=['GET', 'POST'])
def search(): return ytApi.search(request)
@app.route('/yt/api/v1/get-full', methods=['GET', 'POST'])
def getFull(): return ytApi.getFull(request)
@app.route('/yt/api/v1/get-preview', methods=['GET', 'POST'])
def getPreview(): return ytApi.getPreview(request)

###############
#OSU API
@app.route('/osu/api/v1/find-song', methods=['GET', 'POST'])
def findSong(): return osuApi.findSong(request)
@app.route('/osu/api/v1/get-beatmap', methods=['GET', 'POST'])
def getBeatmap(): return osuApi.getBeatmap(request)
@app.route('/osu/api/v1/get-preview', methods=['GET', 'POST'])
def getBMPreview(): return osuApi.getPreview(request)
@app.route('/osu/api/v1/get-full', methods=['GET', 'POST'])
def getBMFull(): return osuApi.getFull(request)

##############
#shh
@app.route('/aminocaptcha/api/v1/solve', methods=['GET', 'POST'])
def predickt(): return aminoOSRapi.apipredict(request)

if __name__ == "__main__":
    config = configFile()
    with open(config['config-path'], "w") as outfile:
        config['buildVersion'] = VERSION
        json.dump(config, outfile)
    with open(config['openapi-yaml-path'], "r+") as outfile:
        info = outfile.read()
        outfile.seek(0)
        outfile.write(info.replace('$VERSION_VARIABLE$', VERSION))
        outfile.truncate()
    
    app.run(host="0.0.0.0", port=7860)