同步操作将从 小圈圈/Archery 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- coding: UTF-8 -*-"""@author: hhyo@license: Apache Licence@file: sql_analyze.py@time: 2019年03月14日"""import simplejson as jsonfrom django.contrib.auth.decorators import permission_requiredfrom common.config import SysConfigfrom sql.plugins.soar import Soarfrom sql.utils.resource_group import user_instancesfrom sql.utils.sql_utils import generate_sqlfrom django.http import HttpResponse, JsonResponsefrom common.utils.extend_json_encoder import ExtendJSONEncoderfrom .models import Instance__author__ = "hhyo"@permission_required("sql.sql_analyze", raise_exception=True)def generate(request):"""解析上传文件为SQL列表:param request::return:"""text = request.POST.get("text")if text is None:result = {"total": 0, "rows": []}else:rows = generate_sql(text)result = {"total": len(rows), "rows": rows}return HttpResponse(json.dumps(result, cls=ExtendJSONEncoder, bigint_as_string=True),content_type="application/json",)@permission_required("sql.sql_analyze", raise_exception=True)def analyze(request):"""利用soar分析SQL:param request::return:"""text = request.POST.get("text")instance_name = request.POST.get("instance_name")db_name = request.POST.get("db_name")if not text:result = {"total": 0, "rows": []}else:soar = Soar()if instance_name != "" and db_name != "":try:instance = user_instances(request.user, db_type=["mysql"]).get(instance_name=instance_name)except Instance.DoesNotExist:return JsonResponse({"status": 1, "msg": "你所在组未关联该实例!", "data": []})soar_test_dsn = SysConfig().get("soar_test_dsn")# 获取实例连接信息online_dsn = f"{instance.user}:{instance.password}@{instance.host}:{instance.port}/{db_name}"else:online_dsn = ""soar_test_dsn = ""args = {"report-type": "markdown","query": "","online-dsn": online_dsn,"test-dsn": soar_test_dsn,"allow-online-as-test": False,}rows = generate_sql(text)for row in rows:args["query"] = row["sql"]cmd_args = soar.generate_args2cmd(args=args)stdout, stderr = soar.execute_cmd(cmd_args).communicate()row["report"] = stdout if stdout else stderrresult = {"total": len(rows), "rows": rows}return HttpResponse(json.dumps(result, cls=ExtendJSONEncoder, bigint_as_string=True),content_type="application/json",)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。