mainPalioSA-async.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. import os
  2. import traceback
  3. import base64
  4. from PIL import ImageFile
  5. from celery.result import AsyncResult
  6. from flask import Flask, request
  7. import project_config_SA
  8. from taskPalioSA import create_task
  9. ImageFile.SAFEBLOCK = 2048 * 2048
  10. app = Flask(__name__)
  11. app.base_project_name = os.path.basename(project_config_SA.base_project)
  12. def vprint(*data):
  13. if project_config_SA.verbose:
  14. print(*data)
  15. @app.route('/', methods=["GET", "POST"])
  16. def build_apk():
  17. vprint('==============================================================')
  18. if request.method == 'POST':
  19. logo = None
  20. logo_float = None
  21. app_name = "NexilisLite"
  22. package_id = "com.app.nexilis"
  23. acc = None
  24. url = None
  25. keystore = None
  26. huawei_file = None
  27. fms_enable = 1
  28. use_adblock = 0
  29. key_exists = False
  30. # tabs = ["1", "2", "3", "4"]
  31. fb_order = "1,2,3,4,5"
  32. tabs = []
  33. tab3_mode = "0"
  34. tab_amount = 6
  35. tab_icon = [None, None, None, None, None, None]
  36. fb_icon = [None, None, None, None, None]
  37. background = None
  38. version_code = "1"
  39. version_name = "1.0.0"
  40. font = 0
  41. enable_sms = 0
  42. enable_location = 0
  43. key = {"alias": "nexilislite", "store_password": "allyourbase", "key_password": "allyourbase",
  44. "common_name": "all", "organization_unit": "your",
  45. "organization_name": "base", "locality_name": "are", "state_name": "belong", "country": "to"}
  46. try:
  47. if 'logo' in request.files:
  48. logo = request.files['logo'].read()
  49. logo = str(base64.b64encode(logo), encoding='ascii')
  50. vprint(type(logo))
  51. elif 'logo' in request.form:
  52. logo = request.form['logo']
  53. vprint(type(logo))
  54. if 'logofloat' in request.files:
  55. logo_float = request.files['logofloat'].read()
  56. logo_float = str(base64.b64encode(logo_float), encoding='ascii')
  57. vprint(type(logo_float))
  58. elif 'logofloat' in request.form:
  59. logo_float = request.form['logofloat']
  60. vprint(type(logo_float))
  61. if 'app_name' in request.files:
  62. app_name = request.files['app_name'].read()
  63. app_name = str(base64.b64encode(app_name), encoding='ascii')
  64. vprint(app_name)
  65. elif 'app_name' in request.form:
  66. app_name = request.form['app_name']
  67. vprint(app_name)
  68. if 'package_id' in request.files:
  69. package_id = request.files['package_id'].read()
  70. package_id = str(base64.b64encode(package_id), encoding='ascii')
  71. vprint(package_id)
  72. elif 'package_id' in request.form:
  73. package_id = request.form['package_id']
  74. vprint(package_id)
  75. if 'acc' in request.files:
  76. acc = request.files['acc'].read()
  77. acc = str(base64.b64encode(acc), encoding='ascii')
  78. vprint(acc)
  79. elif 'acc' in request.form:
  80. acc = request.form['acc']
  81. vprint(acc)
  82. if 'url' in request.files:
  83. url = request.files['url'].read()
  84. url = str(base64.b64encode(url), encoding='ascii')
  85. vprint(url)
  86. elif 'url' in request.form:
  87. url = request.form['url']
  88. vprint(url)
  89. if 'keystore' in request.files:
  90. keystore = request.files['keystore'].read()
  91. keystore = str(base64.b64encode(keystore), encoding='ascii')
  92. key_exists = True
  93. elif 'keystore' in request.form:
  94. keystore = request.form['keystore']
  95. key_exists = True
  96. if 'huawei_file' in request.files:
  97. huawei_file = request.files['huawei_file'].read()
  98. huawei_file = str(base64.b64encode(huawei_file), encoding='ascii')
  99. elif 'huawei_file' in request.form:
  100. huawei_file = request.form['huawei_file']
  101. if 'fms_enable' in request.form:
  102. fms_enable = int(request.form['fms_enable'])
  103. if 'use_adblock' in request.form:
  104. use_adblock = int(request.form['use_adblock'])
  105. if 'alias' in request.form:
  106. if request.form['alias']:
  107. key["alias"] = request.form['alias']
  108. if 'store_password' in request.form:
  109. if request.form['store_password']:
  110. key["store_password"] = request.form['store_password']
  111. if 'key_password' in request.form:
  112. if request.form['key_password']:
  113. key["key_password"] = request.form['key_password']
  114. if not keystore:
  115. if 'common_name' in request.form:
  116. if request.form['common_name']:
  117. key["common_name"] = request.form['common_name']
  118. if 'organization_unit' in request.form:
  119. if request.form['organization_unit']:
  120. key["organization_unit"] = request.form['organization_unit']
  121. if 'organization_name' in request.form:
  122. if request.form['organization_name']:
  123. key["organization_name"] = request.form['organization_name']
  124. if 'locality_name' in request.form:
  125. if request.form['locality_name']:
  126. key["locality_name"] = request.form['locality_name']
  127. if 'state_name' in request.form:
  128. if request.form['state_name']:
  129. key["state_name"] = request.form['state_name']
  130. if 'country' in request.form:
  131. if request.form['country']:
  132. key["country"] = request.form['country']
  133. tabs.append(request.form["tab1"])
  134. tabs.append(request.form["tab2"])
  135. if request.form['tab3']:
  136. tabs.append(request.form["tab3"])
  137. if request.form['tab4']:
  138. tabs.append(request.form["tab4"])
  139. if 'tab1_icon' in request.files:
  140. tab_icon[0] = request.files['tab1_icon'].read()
  141. tab_icon[0] = str(base64.b64encode(tab_icon[0]), encoding='ascii')
  142. elif 'tab1_icon' in request.form:
  143. tab_icon[0] = request.form['tab1_icon']
  144. if 'tab2_icon' in request.files:
  145. tab_icon[1] = request.files['tab2_icon'].read()
  146. tab_icon[1] = str(base64.b64encode(tab_icon[1]), encoding='ascii')
  147. elif 'tab2_icon' in request.form:
  148. tab_icon[1] = request.form['tab2_icon']
  149. if 'tab3_icon' in request.files:
  150. tab_icon[2] = request.files['tab3_icon'].read()
  151. tab_icon[2] = str(base64.b64encode(tab_icon[2]), encoding='ascii')
  152. elif 'tab3_icon' in request.form:
  153. tab_icon[2] = request.form['tab3_icon']
  154. if 'tab4_icon' in request.files:
  155. tab_icon[3] = request.files['tab4_icon'].read()
  156. tab_icon[3] = str(base64.b64encode(tab_icon[3]), encoding='ascii')
  157. elif 'tab4_icon' in request.form:
  158. tab_icon[3] = request.form['tab4_icon']
  159. if 'fb1_icon' in request.files:
  160. fb_icon[0] = request.files['fb1_icon'].read()
  161. fb_icon[0] = str(base64.b64encode(fb_icon[0]), encoding='ascii')
  162. elif 'fb1_icon' in request.form:
  163. fb_icon[0] = request.form['fb1_icon']
  164. if 'fb2_icon' in request.files:
  165. fb_icon[1] = request.files['fb2_icon'].read()
  166. fb_icon[1] = str(base64.b64encode(fb_icon[1]), encoding='ascii')
  167. elif 'fb2_icon' in request.form:
  168. fb_icon[1] = request.form['fb2_icon']
  169. if 'fb3_icon' in request.files:
  170. fb_icon[2] = request.files['fb3_icon'].read()
  171. fb_icon[2] = str(base64.b64encode(fb_icon[2]), encoding='ascii')
  172. elif 'fb3_icon' in request.form:
  173. fb_icon[2] = request.form['fb3_icon']
  174. if 'fb4_icon' in request.files:
  175. fb_icon[3] = request.files['fb4_icon'].read()
  176. fb_icon[3] = str(base64.b64encode(fb_icon[3]), encoding='ascii')
  177. elif 'fb4_icon' in request.form:
  178. fb_icon[3] = request.form['fb4_icon']
  179. if 'fb5_icon' in request.files:
  180. fb_icon[4] = request.files['fb5_icon'].read()
  181. fb_icon[4] = str(base64.b64encode(fb_icon[4]), encoding='ascii')
  182. elif 'fb5_icon' in request.form:
  183. fb_icon[4] = request.form['fb5_icon']
  184. if 'fb_icon' in request.form:
  185. fb_icon = request.form['fb_icon'].split(",")
  186. if 'fb_order' in request.form:
  187. fb_order = request.form['fb_order']
  188. vprint("fb_icon: {}".format(fb_icon))
  189. access_model = int(request.form['access_model'])
  190. if 'tab3_mode' in request.form:
  191. tab3_mode = request.form['tab3_mode']
  192. if 'tab_amount' in request.form:
  193. tab_amount = int(request.form['tab_amount'])
  194. if 'font' in request.form:
  195. font = int(request.form['font'])
  196. if 'background' in request.files:
  197. background = request.files['background'].read()
  198. background = str(base64.b64encode(background), encoding='ascii')
  199. elif 'background' in request.form:
  200. background = request.form['background']
  201. if 'version_code' in request.form:
  202. version_code = request.form['version_code']
  203. if 'version_name' in request.form:
  204. version_name = request.form['version_name']
  205. else:
  206. version_name = "1.0.{}".format(version_code)
  207. if 'enable_sms' in request.form:
  208. enable_sms = int(request.form['enable_sms'])
  209. if 'enable_location' in request.form:
  210. enable_location = int(request.form['enable_location'])
  211. except BaseException as e:
  212. vprint(traceback.format_exc())
  213. return {"status": "1", "message": "Parameter mismatch\n{}\n".format(str(e))}, 400
  214. try:
  215. vprint("package_id: ", type(package_id))
  216. vprint("enable_sms: ", type(enable_sms))
  217. vprint("app_name: ", type(app_name))
  218. vprint("key: ", type(key))
  219. vprint("keystore: ", type(keystore))
  220. vprint("access_model: ", type(access_model))
  221. vprint("version_code: ", type(version_code))
  222. vprint("version_name: ", type(version_name))
  223. vprint("enable_location: ", type(enable_location))
  224. vprint("font: ", type(font))
  225. vprint("fb_order: ", type(fb_order))
  226. vprint("tabs: ", type(tabs))
  227. vprint("tab_icon: ", type(tab_icon))
  228. vprint("fb_icon: ", type(fb_icon))
  229. vprint("tab3_mode: ", type(tab3_mode))
  230. vprint("tab_amount: ", type(tab_amount))
  231. vprint("huawei_file: ", type(huawei_file))
  232. vprint("fms_enable: ", type(fms_enable))
  233. vprint("use_adblock: ", type(use_adblock))
  234. vprint("key_exists: ", type(key_exists))
  235. vprint("acc: ", type(acc))
  236. vprint("logo: ", type(logo))
  237. vprint("logo_float: ", type(logo_float))
  238. vprint("background: ", type(background))
  239. vprint("url: ", type(url))
  240. task = create_task.delay(package_id, enable_sms, app_name, key, keystore, access_model,
  241. version_code, version_name, enable_location, font, fb_order, fb_icon, tabs,
  242. tab_icon, tab3_mode,
  243. tab_amount, huawei_file, fms_enable, use_adblock, key_exists,
  244. acc=acc, logo=logo, logo_float=logo_float, background=background, url=url)
  245. return {"status": "0", "task_id": f"{task.id}"}, 200
  246. except BaseException as e:
  247. vprint(traceback.format_exc())
  248. return {"status": "2", "message": "Process failure\n{}\n".format(str(e))}, 200
  249. else:
  250. if 'e' in request.args:
  251. return request.args['e']
  252. return "Hello World!"
  253. @app.route('/task/<task_id>', methods=['GET'])
  254. def get_task(task_id):
  255. task_result = AsyncResult(task_id)
  256. if task_result.state == 'SUCCESS':
  257. if task_result.result is None:
  258. return {"status": "2", "message": "Process failure"}, 200
  259. elif task_result.result['status'] == '0':
  260. return task_result.result, 200
  261. else:
  262. return task_result.result, 200
  263. elif task_result.state == 'FAILURE':
  264. return {"status": "2", "message": "Process failure"}, 200
  265. else:
  266. return {"status": "5", "message": f"Process is in {task_result.state} state."}, 200
  267. if __name__ == '__main__':
  268. app.run(host='0.0.0.0', port=8013, debug=project_config_SA.verbose, ssl_context=project_config_SA.ssl)