import os import traceback import base64 from PIL import ImageFile from celery.result import AsyncResult from flask import Flask, request import project_config_SA from taskPalioSA import create_task ImageFile.SAFEBLOCK = 2048 * 2048 app = Flask(__name__) app.base_project_name = os.path.basename(project_config_SA.base_project) def vprint(*data): if project_config_SA.verbose: print(*data) @app.route('/', methods=["GET", "POST"]) def build_apk(): vprint('==============================================================') if request.method == 'POST': logo = None logo_float = None app_name = "NexilisLite" package_id = "com.app.nexilis" acc = None url = None keystore = None huawei_file = None fms_enable = 1 use_adblock = 0 key_exists = False # tabs = ["1", "2", "3", "4"] fb_order = "1,2,3,4,5" tabs = [] tab3_mode = "0" tab_amount = 6 tab_icon = [None, None, None, None, None, None] fb_icon = [None, None, None, None, None] background = None version_code = "1" version_name = "1.0.0" font = 0 enable_sms = 0 enable_location = 0 key = {"alias": "nexilislite", "store_password": "allyourbase", "key_password": "allyourbase", "common_name": "all", "organization_unit": "your", "organization_name": "base", "locality_name": "are", "state_name": "belong", "country": "to"} try: if 'logo' in request.files: logo = request.files['logo'].read() logo = str(base64.b64encode(logo), encoding='ascii') vprint(type(logo)) elif 'logo' in request.form: logo = request.form['logo'] vprint(type(logo)) if 'logofloat' in request.files: logo_float = request.files['logofloat'].read() logo_float = str(base64.b64encode(logo_float), encoding='ascii') vprint(type(logo_float)) elif 'logofloat' in request.form: logo_float = request.form['logofloat'] vprint(type(logo_float)) if 'app_name' in request.files: app_name = request.files['app_name'].read() app_name = str(base64.b64encode(app_name), encoding='ascii') vprint(app_name) elif 'app_name' in request.form: app_name = request.form['app_name'] vprint(app_name) if 'package_id' in request.files: package_id = request.files['package_id'].read() package_id = str(base64.b64encode(package_id), encoding='ascii') vprint(package_id) elif 'package_id' in request.form: package_id = request.form['package_id'] vprint(package_id) if 'acc' in request.files: acc = request.files['acc'].read() acc = str(base64.b64encode(acc), encoding='ascii') vprint(acc) elif 'acc' in request.form: acc = request.form['acc'] vprint(acc) if 'url' in request.files: url = request.files['url'].read() url = str(base64.b64encode(url), encoding='ascii') vprint(url) elif 'url' in request.form: url = request.form['url'] vprint(url) if 'keystore' in request.files: keystore = request.files['keystore'].read() keystore = str(base64.b64encode(keystore), encoding='ascii') key_exists = True elif 'keystore' in request.form: keystore = request.form['keystore'] key_exists = True if 'huawei_file' in request.files: huawei_file = request.files['huawei_file'].read() huawei_file = str(base64.b64encode(huawei_file), encoding='ascii') elif 'huawei_file' in request.form: huawei_file = request.form['huawei_file'] if 'fms_enable' in request.form: fms_enable = int(request.form['fms_enable']) if 'use_adblock' in request.form: use_adblock = int(request.form['use_adblock']) if 'alias' in request.form: if request.form['alias']: key["alias"] = request.form['alias'] if 'store_password' in request.form: if request.form['store_password']: key["store_password"] = request.form['store_password'] if 'key_password' in request.form: if request.form['key_password']: key["key_password"] = request.form['key_password'] if not keystore: if 'common_name' in request.form: if request.form['common_name']: key["common_name"] = request.form['common_name'] if 'organization_unit' in request.form: if request.form['organization_unit']: key["organization_unit"] = request.form['organization_unit'] if 'organization_name' in request.form: if request.form['organization_name']: key["organization_name"] = request.form['organization_name'] if 'locality_name' in request.form: if request.form['locality_name']: key["locality_name"] = request.form['locality_name'] if 'state_name' in request.form: if request.form['state_name']: key["state_name"] = request.form['state_name'] if 'country' in request.form: if request.form['country']: key["country"] = request.form['country'] tabs.append(request.form["tab1"]) tabs.append(request.form["tab2"]) if request.form['tab3']: tabs.append(request.form["tab3"]) if request.form['tab4']: tabs.append(request.form["tab4"]) if 'tab1_icon' in request.files: tab_icon[0] = request.files['tab1_icon'].read() tab_icon[0] = str(base64.b64encode(tab_icon[0]), encoding='ascii') elif 'tab1_icon' in request.form: tab_icon[0] = request.form['tab1_icon'] if 'tab2_icon' in request.files: tab_icon[1] = request.files['tab2_icon'].read() tab_icon[1] = str(base64.b64encode(tab_icon[1]), encoding='ascii') elif 'tab2_icon' in request.form: tab_icon[1] = request.form['tab2_icon'] if 'tab3_icon' in request.files: tab_icon[2] = request.files['tab3_icon'].read() tab_icon[2] = str(base64.b64encode(tab_icon[2]), encoding='ascii') elif 'tab3_icon' in request.form: tab_icon[2] = request.form['tab3_icon'] if 'tab4_icon' in request.files: tab_icon[3] = request.files['tab4_icon'].read() tab_icon[3] = str(base64.b64encode(tab_icon[3]), encoding='ascii') elif 'tab4_icon' in request.form: tab_icon[3] = request.form['tab4_icon'] if 'fb1_icon' in request.files: fb_icon[0] = request.files['fb1_icon'].read() fb_icon[0] = str(base64.b64encode(fb_icon[0]), encoding='ascii') elif 'fb1_icon' in request.form: fb_icon[0] = request.form['fb1_icon'] if 'fb2_icon' in request.files: fb_icon[1] = request.files['fb2_icon'].read() fb_icon[1] = str(base64.b64encode(fb_icon[1]), encoding='ascii') elif 'fb2_icon' in request.form: fb_icon[1] = request.form['fb2_icon'] if 'fb3_icon' in request.files: fb_icon[2] = request.files['fb3_icon'].read() fb_icon[2] = str(base64.b64encode(fb_icon[2]), encoding='ascii') elif 'fb3_icon' in request.form: fb_icon[2] = request.form['fb3_icon'] if 'fb4_icon' in request.files: fb_icon[3] = request.files['fb4_icon'].read() fb_icon[3] = str(base64.b64encode(fb_icon[3]), encoding='ascii') elif 'fb4_icon' in request.form: fb_icon[3] = request.form['fb4_icon'] if 'fb5_icon' in request.files: fb_icon[4] = request.files['fb5_icon'].read() fb_icon[4] = str(base64.b64encode(fb_icon[4]), encoding='ascii') elif 'fb5_icon' in request.form: fb_icon[4] = request.form['fb5_icon'] if 'fb_icon' in request.form: fb_icon = request.form['fb_icon'].split(",") if 'fb_order' in request.form: fb_order = request.form['fb_order'] vprint("fb_icon: {}".format(fb_icon)) access_model = int(request.form['access_model']) if 'tab3_mode' in request.form: tab3_mode = request.form['tab3_mode'] if 'tab_amount' in request.form: tab_amount = int(request.form['tab_amount']) if 'font' in request.form: font = int(request.form['font']) if 'background' in request.files: background = request.files['background'].read() background = str(base64.b64encode(background), encoding='ascii') elif 'background' in request.form: background = request.form['background'] if 'version_code' in request.form: version_code = request.form['version_code'] if 'version_name' in request.form: version_name = request.form['version_name'] else: version_name = "1.0.{}".format(version_code) if 'enable_sms' in request.form: enable_sms = int(request.form['enable_sms']) if 'enable_location' in request.form: enable_location = int(request.form['enable_location']) except BaseException as e: vprint(traceback.format_exc()) return {"status": "1", "message": "Parameter mismatch\n{}\n".format(str(e))}, 400 try: vprint("package_id: ", type(package_id)) vprint("enable_sms: ", type(enable_sms)) vprint("app_name: ", type(app_name)) vprint("key: ", type(key)) vprint("keystore: ", type(keystore)) vprint("access_model: ", type(access_model)) vprint("version_code: ", type(version_code)) vprint("version_name: ", type(version_name)) vprint("enable_location: ", type(enable_location)) vprint("font: ", type(font)) vprint("fb_order: ", type(fb_order)) vprint("tabs: ", type(tabs)) vprint("tab_icon: ", type(tab_icon)) vprint("fb_icon: ", type(fb_icon)) vprint("tab3_mode: ", type(tab3_mode)) vprint("tab_amount: ", type(tab_amount)) vprint("huawei_file: ", type(huawei_file)) vprint("fms_enable: ", type(fms_enable)) vprint("use_adblock: ", type(use_adblock)) vprint("key_exists: ", type(key_exists)) vprint("acc: ", type(acc)) vprint("logo: ", type(logo)) vprint("logo_float: ", type(logo_float)) vprint("background: ", type(background)) vprint("url: ", type(url)) task = create_task.delay(package_id, enable_sms, app_name, key, keystore, access_model, version_code, version_name, enable_location, font, fb_order, fb_icon, tabs, tab_icon, tab3_mode, tab_amount, huawei_file, fms_enable, use_adblock, key_exists, acc=acc, logo=logo, logo_float=logo_float, background=background, url=url) return {"status": "0", "task_id": f"{task.id}"}, 200 except BaseException as e: vprint(traceback.format_exc()) return {"status": "2", "message": "Process failure\n{}\n".format(str(e))}, 200 else: if 'e' in request.args: return request.args['e'] return "Hello World!" @app.route('/task/', methods=['GET']) def get_task(task_id): task_result = AsyncResult(task_id) if task_result.state == 'SUCCESS': if task_result.result is None: return {"status": "2", "message": "Process failure"}, 200 elif task_result.result['status'] == '0': return task_result.result, 200 else: return task_result.result, 200 elif task_result.state == 'FAILURE': return {"status": "2", "message": "Process failure"}, 200 else: return {"status": "5", "message": f"Process is in {task_result.state} state."}, 200 if __name__ == '__main__': app.run(host='0.0.0.0', port=8013, debug=project_config_SA.verbose, ssl_context=project_config_SA.ssl)