示例#1
0
def group_plugin_page():
    sql = "SELECT * FROM `group`"
    mysqldb.execute(sql)
    data = mysqldb.fetchall()
    groups = []
    for line in data:
        group = {"g_id": line[0], "g_name": line[1], "plugins": []}
        if line[0] == "*":
            group["g_id"] = "all"
        groups.append(group)
    sql = """
    SELECT a.plugin_name,a.plugin_bname,a.package_name,c.g_id FROM group_message_plugin as a LEFT JOIN (
        SELECT * FROM group_message_plugin_activate as b WHERE b.g_id = %s
        ) as c on c.plugin_name = a.plugin_name
    """
    #print(groups)
    for i in range(len(groups)):
        now_group_id = groups[i]["g_id"]
        if now_group_id == "all":
            now_group_id = "*"
        mysqldb.execute(sql, (now_group_id))
        data = mysqldb.fetchall()
        for line in data:
            package = {
                "bname": line[1],
                "name": line[0],
                "package_name": line[2]
            }
            if isinstance(line[3], str):
                package["bstate"] = "启用"
            else:
                package["bstate"] = "停用"
            groups[i]["plugins"].append(package)
    #print(groups)
    return render_template("group_plugin_list.html", groups=groups)
示例#2
0
def login():
    if request.method == "GET":
        resp = render_template("login_admin.html")
    else:
        mysqlconn.ping(reconnect=True)
        target = request.args.get("redirect")
        if target is None:
            target = "/"
        target = urllib.parse.unquote(target)
        #print(target)
        username = request.form["username"]
        passwd = request.form["password"]
        exist = mysqldb.execute("SELECT * from admin WHERE id=%s", username)
        state = False
        if exist:
            user = mysqldb.fetchall()[0]
            state = check(user, passwd)
        if state:
            cookies = str(uuid.uuid4())
            redisdb.set(
                cookies,
                json.dumps({
                    "id": user[0],
                    "auth_class": user[3],
                    "OTP_key": user[4]
                }))
            resp = Response(render_template("redirect.html", target=target))
            resp.set_cookie("token", cookies)
        else:
            resp = render_template("login_admin.html",
                                   color='red',
                                   message='密码错误或用户不存在')
    return resp
示例#3
0
def reset_by_admin():
    target_id = request.form["s_id"]
    newpassword = request.form["newpassword"]
    otppassword = request.form["otppassword"]
    data = json.loads(redisdb.get(request.cookies["token"]))
    otp_key = data["OTP_key"]
    sql = "SELECT * FROM admin where id = %s"
    mysqldb.execute(sql, (target_id))
    user_data = mysqldb.fetchall()[0]
    otp_checker = pyotp.TOTP(otp_key)
    #print(otp_checker.now(),otppassword)
    if otp_checker.verify(otppassword):
        md5 = hashlib.md5()
        md5.update(f"{newpassword}{user_data[2]}".encode("utf-8"))
        md5_passwd = md5.hexdigest()
        try:
            sql = "UPDATE admin SET password=%s WHERE id=%s"
            mysqldb.execute(sql, (md5_passwd, target_id))
            mysqlconn.commit()
            return "success"
        except Exception as e:
            print(e)
            return "fail"
    else:
        return "fail"
示例#4
0
文件: app.py 项目: yj490732088/qq_bot
def reflash_plugin():
    #plugin_private_reflash
    sql = "SELECT * FROM private_message_plugin"
    temp = mysqldb.execute(sql)
    new_privateMessageHandles = []
    data = mysqldb.fetchall()
    for plugin in data:
        module = importlib.import_module(plugin[2])
        if plugin[3] == 0:
            new_privateMessageHandles.append(
                [module.re_str, module.handle, module.sample_active_word])
        elif plugin[3] == 1:
            new_privateMessageHandles.append(
                [module.re_str, tempstop_handle, "null"])
        else:
            new_privateMessageHandles.append(
                [module.re_str, empty_handle, "null"])
    global privateMessageHandles
    #print(privateMessageHandles)
    #print(new_privateMessageHandles)
    privateMessageHandles = new_privateMessageHandles
    #plugin_group_reflash
    sql = "SELECT a.g_id,b.package_name FROM group_message_plugin_activate as a LEFT JOIN group_message_plugin as b on a.plugin_name = b.plugin_name"
    mysqldb.execute(sql)
    data = mysqldb.fetchall()
    new_groupMessageHandles = {}
    new_groupMessageHandle_init_data = {}
    for plugin in data:
        module = importlib.import_module(plugin[1])
        new_groupMessageHandle_init_data[module.plugin_name] = module.setup()
        if plugin[0] in new_groupMessageHandles.keys():
            new_groupMessageHandles[plugin[0]].append(
                [module.plugin_name, module.handle])
        else:
            temp = [[module.plugin_name, module.handle]]
            new_groupMessageHandles[plugin[0]] = temp
    global groupMessageHandles
    #print(groupMessageHandles)
    #print(new_groupMessageHandles)
    groupMessageHandles = new_groupMessageHandles
    global groupMessageHandle_init_data
    groupMessageHandle_init_data = new_groupMessageHandle_init_data
    return json.dumps({"state": True})
示例#5
0
def user_list():
    sql = "SELECT admin.id,admin.auth_class FROM admin"
    mysqldb.execute(sql)
    users_list = mysqldb.fetchall()
    users = []
    for line in users_list:
        user = {"userid": line[0], "type": line[1]}
        users.append(user)
    #print(users)
    return render_template("user_list.html", users=users)
示例#6
0
def dialogue(qid):
    sql = "SELECT * FROM message WHERE sender=%s ORDER BY send_time ASC"
    state = mysqldb.execute(sql, (qid))
    if state > 0:
        data = mysqldb.fetchall()
        dialogues = []
        for line in data:
            dialogue = {
                "detail": replace_cq2html(line[3]),
                "send_time": line[2],
                "res": line[4],
                "res_time": line[6]
            }
            dialogues.append(dialogue)
        sql = "SELECT a.qid,b.* FROM qid2sid as a LEFT JOIN stdinfo  as b on a.sid=b.sid WHERE a.qid=%s"
        state = mysqldb.execute(sql, (qid))
        if state > 0:
            have_info = True
            data = mysqldb.fetchall()
            sender = {
                "qid": qid,
                "name": data[0][2],
                "sid": data[0][1],
                "major": data[0][5],
                "school": data[0][4],
                "sex": data[0][3]
            }
            if isinstance(data[0][6], str):
                sender["phone"] = data[0][6]
            else:
                sender["phone"] = "未绑定"
        else:
            have_info = False
            sender = {"qid": qid}
        return render_template("dialogue.html",
                               have_info=have_info,
                               sender=sender,
                               dialogues=dialogues)
    else:
        return "<h1>无该对话</h1>"
示例#7
0
def message_list():
    sql = "SELECT * FROM message AS a WHERE a.send_time IN ( SELECT MAX( send_time ) FROM message GROUP BY sender ) ORDER BY send_time DESC"
    mysqldb.execute(sql)
    data = mysqldb.fetchall()
    messages = []
    for line in data:
        message = {
            "sender_id": line[1],
            "detail": replace_cq2html(line[3], nohtml=True),
            "time": line[2]
        }
        messages.append(message)
    return render_template("message_list.html", messages=messages)
示例#8
0
def log_data(target="*"):
    data = []
    name = []
    if target == "*":
        mysqldb.execute(
            f"SELECT date_format(days,'%m月%d日'),num FROM `daily_event_num` LIMIT 5"
        )
    else:
        mysqldb.execute(
            f"SELECT date_format(days,'%m月%d日'),num FROM `daily_friendadd_num` LIMIT 5"
        )
    getdata = mysqldb.fetchall()
    for line in getdata:
        name.append(line[0])
        data.append(line[1])
    return name, data
示例#9
0
def private_plugin_page():
    sql = "SELECT * FROM private_message_plugin"
    mysqldb.execute(sql)
    data = mysqldb.fetchall()
    plugins = []
    for line in data:
        plugin = {
            "name": line[0],
            "bname": line[1],
            "package_name": line[2],
            "state": line[3]
        }
        if line[3] == 0:
            plugin["bstate"] = "启用"
        elif line[3] == 1:
            plugin["bstate"] = "临时停用"
        else:
            plugin["bstate"] = "永久停用"
        plugins.append(plugin)
    return render_template("private_plugin_list.html", plugins=plugins)
示例#10
0
def reset_by_user():
    oldpassword = request.form["oldpassword"]
    newpassword = request.form["newpassword"]
    data = json.loads(redisdb.get(request.cookies["token"]))
    user_id = data["id"]
    sql = "SELECT * FROM admin where id = %s"
    mysqldb.execute(sql, (user_id))
    user_data = mysqldb.fetchall()[0]
    if check(user_data, oldpassword):
        md5 = hashlib.md5()
        md5.update(f"{newpassword}{user_data[2]}".encode("utf-8"))
        md5_passwd = md5.hexdigest()
        try:
            sql = "UPDATE admin SET password=%s WHERE id=%s"
            mysqldb.execute(sql, (md5_passwd, user_id))
            mysqlconn.commit()
            return json.dumps({"state": "success", "message": "修改成功"})
        except Exception as e:
            return json.dumps({"state": "fail", "message": "服务器异常"})
    else:
        return json.dumps({"state": "fail", "message": "密码有误"})
示例#11
0
def user_home(user_id):
    userdata = json.loads(redisdb.get(request.cookies["token"]))
    operator_id = userdata["id"]
    operator_auth = userdata["auth_class"]
    if operator_id == user_id:
        operator_otpkey = userdata["OTP_key"]
        otp_url = pyotp.totp.TOTP(operator_otpkey).provisioning_uri(
            f"{operator_id}@sues.edu.cn", issuer_name="qq_bot_service")
        return render_template("user_personal.html",
                               s_id=operator_id,
                               usertype=operator_auth,
                               otpuri=otp_url)
    else:
        if operator_auth > 0:
            return "<h1>无权访问</h1>"
        else:
            sql = "SELECT * FROM admin WHERE id=%s"
            mysqldb.execute(sql, (user_id))
            data = mysqldb.fetchall()[0]
            return render_template("user_root.html",
                                   s_id=data[0],
                                   usertype=data[-2])
示例#12
0
文件: app.py 项目: yj490732088/qq_bot
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
#int
bot = CQHttp(api_root=setupfile.cq_api_root,
             access_token=setupfile.cq_access_token,
             secret=setupfile.cq_secret)
app = bot.server_app

# plugin_private_add
sql = "SELECT * FROM private_message_plugin"
private_plugin_list = mysqldb.execute(sql)
privateMessageHandles = []
data = mysqldb.fetchall()
for plugin in data:
    module = importlib.import_module(plugin[2])
    app.register_blueprint(module.blueprint,
                           url_prefix=f"/admin/plugin/private/{plugin[0]}")
    #print(plugin)
    if plugin[3] == 0:
        privateMessageHandles.append(
            [module.re_str, module.handle, module.sample_active_word])
    elif plugin[3] == 1:
        privateMessageHandles.append([module.re_str, tempstop_handle, "null"])
    else:
        privateMessageHandles.append([module.re_str, empty_handle, "null"])

# plugin_group_add
sql = "SELECT * FROM group_message_plugin"
示例#13
0
from flask import Blueprint
from flask import redirect
from flask import request, Response, render_template
from db import mysqlconn, mysqldb, redisdb
import myAuth
#init

admin = Blueprint("admin",
                  __name__,
                  template_folder='templates',
                  static_folder='static')

private_plugin = []
sql = "SELECT * FROM private_message_plugin"
private_plugin_list = mysqldb.execute(sql)
data = mysqldb.fetchall()
for plugin in data:
    plugin_label = {"bname": plugin[1], "name": plugin[0], "state": plugin[2]}
    private_plugin.append(plugin_label)

group_plugin = []
sql = "SELECT * FROM group_message_plugin"
private_plugin_list = mysqldb.execute(sql)
data = mysqldb.fetchall()
for plugin in data:
    plugin_label = {"bname": plugin[1], "name": plugin[0]}
    group_plugin.append(plugin_label)


def replace_cq2html(message: str, nohtml=False):
    image = re.search("\[CQ:image.*]", message)