-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.py
96 lines (73 loc) · 2.4 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
from flask import Flask, render_template, request, Response, jsonify, send_file
import helper.helper as h
app = Flask(__name__)
global_data = None
unpatched_apk = None
unpatched_apk_info = None
download_filename = None
# Clear cache files on reload
h.remove_files_in_directory()
@app.route("/upload", methods=["POST"])
def upload():
global unpatched_apk, unpatched_apk_info, download_filename
# Save uploaded file to temp directory
temp_apk = "bin/apk/unpatched.apk"
if "file" not in request.files:
return "No file part"
file = request.files["file"]
if file.filename == "":
return "No selected file"
file.save(temp_apk)
# Check with android manifest if file is a valid apk
temp_apk_info = h.read_apk_file(temp_apk)
if not temp_apk_info:
# Declare valid apk not found
unpatched_apk = None
unpatched_apk_info = None
return jsonify({"error": "Invalid file"}), 500
else:
# Save valid package info in memory
unpatched_apk = temp_apk
unpatched_apk_info = temp_apk_info
package_name = unpatched_apk_info["package_name"]
package_version = unpatched_apk_info["package_version"]
download_filename = package_name
compatible_patches = list(
h.get_compatible_patches(package_name, package_version)
)
data = {
"package_info": unpatched_apk_info,
"compatible_patches": compatible_patches,
}
return jsonify(data)
@app.route("/send", methods=["POST"])
def send():
global global_data
global_data = request.json
return jsonify({"result": "success"})
@app.route("/progress")
def progress():
def revanced_args():
global global_data
return h.generate_revanced_args(global_data) if global_data else ""
return Response(
h.start_revanced_patch(revanced_args()), content_type="text/event-stream"
)
@app.route("/download")
def download():
response = send_file(
h.retrieve_patched_apk(),
as_attachment=True,
download_name=f"{download_filename}.revanced.patched.apk",
)
return response
@app.route("/")
def dashboard():
return render_template("index.html")
if h.is_java_sdk_installed():
if __name__ == "__main__":
app.run()
else:
print("Java SDK 11 not found. Please install and try again.")
print(h.get_jdk_url())
exit("Exiting...")