apps.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. from typing import Optional, List
  2. from fastapi import APIRouter, status, Depends, Query, Request
  3. from pydantic import BaseModel, Field
  4. from starlette.responses import JSONResponse
  5. import os, io, sys, platform, shutil, time, subprocess, json, datetime
  6. from api.model.app import App
  7. from api.model.response import Response
  8. from api.service import manage, db
  9. from api.utils import shell_execute, const
  10. from api.utils.common_log import myLogger
  11. from api.exception.command_exception import CommandException
  12. router = APIRouter()
  13. rd_s = "ResponseData: 各个接口的业务数据\n\n{\n\n"
  14. rd_m = "  AppID:应用ID\n\n}\n\n"
  15. rd_e = "Error:错误code和错误信息\n\n{\n\n" \
  16. "  Code:错误码,\n\n" \
  17. "  Message:错误信息,\n\n" \
  18. "  Detail:错误详情\n\n}"
  19. rd_status = "  app_id:应用ID\n\n" \
  20. "  status:应用运行状态,[installing(创建中),running(运行中),exited(停止),restarting(反复重启),failed(失败)]\n\n" \
  21. "  StatusReason:{\n\n" \
  22. "    Code:错误代码,\n\n" \
  23. "    Message:错误提示信息,\n\n" \
  24. "    Detail:错误真实信息\n\n  }\n\n}\n\n"
  25. info = "  app_id:应用ID,\n\n  app_name:应用名,\n\n" \
  26. "  customer_name:自定义应用名,\n\n  trade_mark:应用商标,\n\n" \
  27. "  status:应用运行状态,[installing(创建中),running(运行中),exited(停止),restarting(反复重启),failed(失败)]\n\n" \
  28. "  StatusReason:{\n\n" \
  29. "    Code:错误代码,\n\n" \
  30. "    Message:错误提示信息,\n\n" \
  31. "    Detail:错误真实信息\n\n  }\n\n" \
  32. "  official_app:是否为官方应用,\n\n" \
  33. "  app_version:应用版本,\n\n" \
  34. "  create_time:应用创建时间,\n\n" \
  35. "  volume_data:数据目录,\n\n" \
  36. "  config_path:配置目录,\n\n" \
  37. "  image_url:图片路径,\n\n" \
  38. "  app_https:是否为https,\n\n" \
  39. "  app_replace_url:是否有替代网址,\n\n" \
  40. "  config:{\n\n" \
  41. "    port:应用端口,\n\n    compose_file:docker compose 文件路径,\n\n" \
  42. "    url:应用网址,\n\n    admin_url:管理员网址,\n\n" \
  43. "    admin_path:后台后缀,\n\n    admin_username:管理员用户名,\n\n    admin_password:管理员密码,\n\n" \
  44. "    admin_domain_url:后台域名访问地址,\n\n    default_domain:默认域名}\n\n}\n\n"
  45. domain = "  Domain_set:{\n\n" \
  46. "    domains:域名列表\n\n" \
  47. "    default_domain:默认域名\n\n  }\n\n}\n\n"
  48. update = "  Compare_content: 内容比较 {\n\n" \
  49. "    local_version: 当前版本,\n\n" \
  50. "    target_version: 最新版本\n\n" \
  51. "    content: 更新内容\n\n" \
  52. "    date: 更新日期\n\n" \
  53. "    update: 是否有更新\n\n" \
  54. "    core_compare: 是否支持升级(-1:需要升级内核 0:可以升级 1:无法支持)\n\n    }\n\n}\n\n"
  55. appstore_update = "  Update_flag: 更新结果(成功或失败)\n\n}\n\n"
  56. auto = "  auto_update: 目前的自动更新状态\n\n}\n\n"
  57. user = "  user: 用户信息{\n\n" \
  58. "      username: 用户名\n\n" \
  59. "      password: 密码\n\n" \
  60. "      nick_name: 昵称\n\n    }\n\n}\n\n"
  61. updateuser = "  Update_user: True or False\n\n}\n\n"
  62. rd = rd_s + rd_m + rd_e
  63. rd_info = rd_s + info + rd_e
  64. rd_status = rd_s + rd_status + rd_e
  65. rd_domain = rd_s + domain + rd_e
  66. rd_update_list = rd_s + update + rd_e
  67. rd_appstore = rd_s + appstore_update + rd_e
  68. rd_auto_list = rd_s + auto + rd_e
  69. rd_user_list = rd_s + user + rd_e
  70. rd_updateuser_list=rd_s + updateuser + rd_e
  71. @router.api_route("/AppStatus", methods=["GET", "POST"], summary="获取指定APP的信息",
  72. response_description=rd_status,
  73. response_model=Response)
  74. def AppStatus(request: Request,app_id: Optional[str] = Query(default=None, description="应用ID")):
  75. try:
  76. myLogger.info_logger("Receive request: /AppStatus")
  77. get_headers(request)
  78. ret = {}
  79. ret['ResponseData'] = manage.get_app_status(app_id)
  80. except CommandException as ce:
  81. myLogger.info_logger(ce.message)
  82. ret = {}
  83. ret['ResponseData'] = None
  84. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  85. except Exception as e:
  86. myLogger.info_logger(e)
  87. ret = {}
  88. ret['ResponseData'] = None
  89. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  90. return JSONResponse(ret)
  91. @router.api_route("/AppList", methods=["GET", "POST"], summary="获取所有APP的信息", response_description=rd_info,
  92. response_model=Response)
  93. def AppList(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID")):
  94. try:
  95. myLogger.info_logger("Receive request: /AppList")
  96. get_headers(request)
  97. app_list = manage.get_my_app(app_id)
  98. myLogger.info_logger(len(app_list))
  99. response = JSONResponse({'ResponseData': app_list})
  100. except CommandException as ce:
  101. ret = {}
  102. ret['ResponseData'] = None
  103. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  104. response = JSONResponse(content=ret)
  105. except Exception as e:
  106. ret = {}
  107. ret['ResponseData'] = None
  108. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  109. response = JSONResponse(content=ret)
  110. return response
  111. @router.api_route("/AppInstall", methods=["GET", "POST"], summary="安装APP", response_description=rd,
  112. response_model=Response)
  113. def AppInstall(request: Request, app_name: Optional[str] = Query(default=None, description="应用名称"),
  114. customer_app_name: Optional[str] = Query(default=None, description="用户自定义应用名称"),
  115. app_version: Optional[str] = Query(default=None, description="应用版本")):
  116. try:
  117. myLogger.info_logger("Receive request: /AppInstall")
  118. get_headers(request)
  119. ret = manage.install_app(app_name, customer_app_name, app_version)
  120. except CommandException as ce:
  121. ret = {}
  122. ret['ResponseData'] = {}
  123. ret['ResponseData']['AppID'] = app_name + "_" + customer_app_name
  124. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  125. myLogger.error_logger("Ready for return fail message")
  126. except Exception as e:
  127. myLogger.error_logger(str(e))
  128. ret = {}
  129. ret['ResponseData'] = {}
  130. ret['ResponseData']['AppID'] = app_name + "_" + customer_app_name
  131. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  132. myLogger.info_logger(ret)
  133. return JSONResponse(content=ret)
  134. @router.api_route("/AppStart", methods=["GET", "POST"], summary="启动APP", response_description=rd,
  135. response_model=Response)
  136. def AppStart(request: Request,app_id: Optional[str] = Query(default=None, description="应用ID")):
  137. try:
  138. myLogger.info_logger("Receive request: /AppStart")
  139. get_headers(request)
  140. ret = {}
  141. ret['ResponseData'] = {}
  142. manage.start_app(app_id)
  143. ret['ResponseData']['AppID'] = app_id
  144. except CommandException as ce:
  145. ret = {}
  146. ret['ResponseData'] = {}
  147. ret['ResponseData']['AppID'] = app_id
  148. myLogger.info_logger("AppStart commond error")
  149. myLogger.info_logger(ce.detail)
  150. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  151. except Exception as e:
  152. ret = {}
  153. ret['ResponseData'] = {}
  154. ret['ResponseData']['AppID'] = app_id
  155. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  156. return JSONResponse(content=ret)
  157. @router.api_route("/AppStop", methods=["GET", "POST"], summary="停止APP", response_description=rd,
  158. response_model=Response)
  159. def AppStop(request: Request,app_id: Optional[str] = Query(default=None, description="应用ID")):
  160. try:
  161. myLogger.info_logger("Receive request: /AppStop")
  162. get_headers(request)
  163. ret = {}
  164. ret['ResponseData'] = {}
  165. manage.stop_app(app_id)
  166. ret['ResponseData']['AppID'] = app_id
  167. except CommandException as ce:
  168. ret = {}
  169. ret['ResponseData'] = {}
  170. ret['ResponseData']['AppID'] = app_id
  171. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  172. except Exception as e:
  173. ret = {}
  174. ret['ResponseData'] = {}
  175. ret['ResponseData']['AppID'] = app_id
  176. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  177. return JSONResponse(content=ret)
  178. @router.api_route("/AppRestart", methods=["GET", "POST"], summary="重启APP", response_description=rd,
  179. response_model=Response)
  180. def AppRestart(request: Request,app_id: Optional[str] = Query(default=None, description="应用ID")):
  181. try:
  182. myLogger.info_logger("Receive request: /AppRestart")
  183. get_headers(request)
  184. ret = {}
  185. ret['ResponseData'] = {}
  186. manage.restart_app(app_id)
  187. ret['ResponseData']['AppID'] = app_id
  188. except CommandException as ce:
  189. ret = {}
  190. ret['ResponseData'] = {}
  191. ret['ResponseData']['AppID'] = app_id
  192. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  193. except Exception as e:
  194. ret = {}
  195. ret['ResponseData'] = {}
  196. ret['ResponseData']['AppID'] = app_id
  197. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  198. return JSONResponse(content=ret)
  199. @router.api_route("/AppUninstall", methods=["GET", "POST"], summary="卸载APP", response_description=rd,
  200. response_model=Response)
  201. def AppUninstall(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID")):
  202. try:
  203. myLogger.info_logger("Receive request: /AppUninstall")
  204. get_headers(request)
  205. ret = {}
  206. ret['ResponseData'] = {}
  207. manage.uninstall_app(app_id)
  208. ret['ResponseData']['AppID'] = app_id
  209. except CommandException as ce:
  210. ret = {}
  211. ret['ResponseData'] = {}
  212. ret['ResponseData']['AppID'] = app_id
  213. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  214. except Exception as e:
  215. ret = {}
  216. ret['ResponseData'] = {}
  217. ret['ResponseData']['AppID'] = app_id
  218. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  219. return JSONResponse(content=ret)
  220. @router.api_route("/AppDomainAdd", methods=["GET", "POST"], summary="绑定域名", response_model=Response, response_description=rd)
  221. def AppDomainAdd(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID"), domains: Optional[str] = Query(default=None, description="域名")):
  222. try:
  223. myLogger.info_logger("Receive request: /AppDomainAdd")
  224. get_headers(request)
  225. ret = {}
  226. ret['ResponseData'] = {}
  227. manage.app_domain_add(app_id,domains)
  228. ret['ResponseData']['AppID'] = app_id
  229. except CommandException as ce:
  230. ret = {}
  231. ret['ResponseData'] = {}
  232. ret['ResponseData']['AppID'] = app_id
  233. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  234. except Exception as e:
  235. ret = {}
  236. ret['ResponseData'] = {}
  237. ret['ResponseData']['AppID'] = app_id
  238. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  239. return JSONResponse(content=ret)
  240. @router.api_route("/AppDomainUpdate", methods=["GET", "POST"], summary="修改域名", response_model=Response, response_description=rd)
  241. def AppDomainUpdate(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID"), domain_old: Optional[str] = Query(default=None, description="原域名"), domain_new: Optional[str] = Query(default=None, description="新域名")):
  242. try:
  243. myLogger.info_logger("Receive request: /AppDomainUpdate")
  244. get_headers(request)
  245. ret = {}
  246. ret['ResponseData'] = {}
  247. domains = manage.app_domain_update(app_id,domain_old,domain_new)
  248. ret['ResponseData']['AppID'] = app_id
  249. except CommandException as ce:
  250. ret = {}
  251. ret['ResponseData'] = {}
  252. ret['ResponseData']['AppID'] = app_id
  253. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  254. except Exception as e:
  255. ret = {}
  256. ret['ResponseData'] = {}
  257. ret['ResponseData']['AppID'] = app_id
  258. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  259. return JSONResponse(content=ret)
  260. @router.api_route("/AppDomainDelete", methods=["GET", "POST"], summary="删除域名", response_model=Response, response_description=rd)
  261. def AppDomainDelete(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID"), domain: Optional[str] = Query(default=None, description="删除域名")):
  262. try:
  263. myLogger.info_logger("Receive request: /AppDomainDelete")
  264. get_headers(request)
  265. ret = {}
  266. ret['ResponseData'] = {}
  267. manage.app_domain_delete(app_id,domain)
  268. ret['ResponseData']['AppID'] = app_id
  269. except CommandException as ce:
  270. ret = {}
  271. ret['ResponseData'] = {}
  272. ret['ResponseData']['AppID'] = app_id
  273. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  274. except Exception as e:
  275. ret = {}
  276. ret['ResponseData'] = {}
  277. ret['ResponseData']['AppID'] = app_id
  278. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  279. return JSONResponse(content=ret)
  280. @router.api_route("/AppDomainSet", methods=["GET", "POST"], summary="设定域名", response_model=Response, response_description=rd)
  281. def AppDomainSet(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID"), domain: Optional[str] = Query(default=None, description="域名")):
  282. try:
  283. myLogger.info_logger("Receive request: /AppDomainSet")
  284. get_headers(request)
  285. ret = {}
  286. ret['ResponseData'] = {}
  287. manage.app_domain_set(domain,app_id)
  288. ret['ResponseData']['AppID'] = app_id
  289. except CommandException as ce:
  290. ret = {}
  291. ret['ResponseData'] = {}
  292. ret['ResponseData']['AppID'] = app_id
  293. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  294. except Exception as e:
  295. ret = {}
  296. ret['ResponseData'] = {}
  297. ret['ResponseData']['AppID'] = app_id
  298. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  299. return JSONResponse(content=ret)
  300. @router.api_route("/AppDomainList", methods=["GET", "POST"], summary="查询App对应域名", response_model=Response, response_description=rd_domain)
  301. def AppDomainList(request: Request, app_id: Optional[str] = Query(default=None, description="应用ID")):
  302. try:
  303. myLogger.info_logger("Receive request: /AppDomainList")
  304. get_headers(request)
  305. ret = {}
  306. ret['ResponseData'] = {}
  307. domain_set = manage.app_domain_list(app_id)
  308. ret['ResponseData']['Domain_set'] = domain_set
  309. myLogger.info_logger(ret)
  310. response = JSONResponse(content=ret)
  311. except CommandException as ce:
  312. ret = {}
  313. ret['ResponseData'] = {}
  314. ret['ResponseData']['AppID'] = app_id
  315. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  316. response = JSONResponse(content=ret)
  317. except Exception as e:
  318. ret = {}
  319. ret['ResponseData'] = {}
  320. ret['ResponseData']['AppID'] = app_id
  321. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  322. response = JSONResponse(content=ret)
  323. return response
  324. @router.api_route("/AppStoreUpdateList", methods=["GET", "POST"], summary="查询Appstore更新內容", response_model=Response, response_description=rd_update_list)
  325. def AppStoreUpdateList(request: Request):
  326. try:
  327. myLogger.info_logger("Receive request: /AppStoreUpdateList")
  328. get_headers(request)
  329. ret = {}
  330. ret['ResponseData'] = {}
  331. ret['ResponseData']['Compare_content'] = manage.get_appstore_update_list()
  332. myLogger.info_logger(ret)
  333. response = JSONResponse(content=ret)
  334. except CommandException as ce:
  335. ret = {}
  336. ret['ResponseData'] = {}
  337. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  338. response = JSONResponse(content=ret)
  339. except Exception as e:
  340. ret = {}
  341. ret['ResponseData'] = {}
  342. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  343. response = JSONResponse(content=ret)
  344. return response
  345. @router.api_route("/AppUpdateList", methods=["GET", "POST"], summary="查询更新內容", response_model=Response, response_description=rd_update_list)
  346. def AppUpdateList(request: Request):
  347. try:
  348. myLogger.info_logger("Receive request: /AppUpdateList")
  349. get_headers(request)
  350. ret = {}
  351. ret['ResponseData'] = {}
  352. ret['ResponseData']['Compare_content'] = manage.get_update_list()
  353. myLogger.info_logger(ret)
  354. response = JSONResponse(content=ret)
  355. except CommandException as ce:
  356. ret = {}
  357. ret['ResponseData'] = {}
  358. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  359. response = JSONResponse(content=ret)
  360. except Exception as e:
  361. ret = {}
  362. ret['ResponseData'] = {}
  363. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  364. response = JSONResponse(content=ret)
  365. return response
  366. @router.api_route("/AppStoreUpdate", methods=["GET", "POST"], summary="更新软件商店", response_model=Response, response_description=rd_appstore)
  367. def AppStoreUpdate(request: Request):
  368. try:
  369. myLogger.info_logger("Receive request: /AppStoreUpdate")
  370. get_headers(request)
  371. manage.AppStoreUpdate()
  372. ret = {}
  373. ret['ResponseData'] = {}
  374. ret['ResponseData']['Update_flag'] = "success"
  375. myLogger.info_logger(ret)
  376. response = JSONResponse(content=ret)
  377. except CommandException as ce:
  378. ret = {}
  379. ret['ResponseData'] = {}
  380. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  381. response = JSONResponse(content=ret)
  382. except Exception as e:
  383. ret = {}
  384. ret['ResponseData'] = {}
  385. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  386. response = JSONResponse(content=ret)
  387. return response
  388. @router.api_route("/AppAutoUpdate", methods=["GET", "POST"], summary="软件商店自动更新", response_model=Response, response_description=rd_auto_list)
  389. def AppAutoUpdate(request: Request,auto_update: Optional[str] = Query(default=None, description="自动更新标志(可选值:true,false,None)")):
  390. try:
  391. myLogger.info_logger("Receive request: /AppAutoUpdate")
  392. get_headers(request)
  393. ret = {}
  394. ret['ResponseData'] = {}
  395. ret['ResponseData']['auto_update'] = "api is not available"
  396. response = JSONResponse(content=ret)
  397. except CommandException as ce:
  398. ret = {}
  399. ret['ResponseData'] = {}
  400. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  401. response = JSONResponse(content=ret)
  402. except Exception as e:
  403. ret = {}
  404. ret['ResponseData'] = {}
  405. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  406. response = JSONResponse(content=ret)
  407. return response
  408. @router.api_route("/AppSearchUsers", methods=["GET", "POST"], summary="获取appstore用户信息", response_model=Response, response_description=rd_user_list)
  409. def AppSearchUsers(request: Request, plugin_name: Optional[str] = Query(default=None, description="插件名(仅支持portainer,nginx)")):
  410. try:
  411. myLogger.info_logger("Receive request: /AppSearchUsers")
  412. get_headers(request)
  413. ret = {}
  414. ret['ResponseData'] = {}
  415. ret['ResponseData']['user'] = db.AppSearchUsers(plugin_name)
  416. response = JSONResponse(content=ret)
  417. except CommandException as ce:
  418. ret = {}
  419. ret['ResponseData'] = {}
  420. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  421. response = JSONResponse(content=ret)
  422. except Exception as e:
  423. ret = {}
  424. ret['ResponseData'] = {}
  425. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  426. response = JSONResponse(content=ret)
  427. return response
  428. @router.api_route("/AppUpdateUser", methods=["GET", "POST"], summary="更新appstore用户信息", response_model=Response, response_description=rd_updateuser_list)
  429. def AppUpdateUser(request: Request,user_name: Optional[str] = Query(default=None, description="用户名"), password: Optional[str] = Query(default=None, description="密码")):
  430. try:
  431. myLogger.info_logger("Receive request: /AppUpdateUser")
  432. get_headers(request)
  433. ret = {}
  434. ret['ResponseData'] = {}
  435. db.AppUpdateUser(user_name, password)
  436. ret['ResponseData']['update_flag'] = True
  437. response = JSONResponse(content=ret)
  438. except CommandException as ce:
  439. ret = {}
  440. ret['ResponseData'] = {}
  441. ret['Error'] = manage.get_error_info(ce.code, ce.message, ce.detail)
  442. response = JSONResponse(content=ret)
  443. except Exception as e:
  444. ret = {}
  445. ret['ResponseData'] = {}
  446. ret['Error'] = manage.get_error_info(const.ERROR_SERVER_SYSTEM, "system original error", str(e))
  447. response = JSONResponse(content=ret)
  448. return response
  449. def get_headers(request):
  450. headers = request.headers
  451. try:
  452. version = headers.get('Version')
  453. language = headers.get('Language')
  454. myLogger.info_logger("Version: " + version + ", Language: " + language)
  455. except:
  456. pass