宝塔将指定Header Key的所有请求日志不存储到数据库

日志记录第一处:

核心代码文件 /www/server/panel/class/db.py找到 def add 函数。

d2b5ca33bd20250729093145

修改为

def is_insert_log(self, request):
        if (self.__DB_TABLE == 'logs' or self.__DB_TABLE == 'client_info') and request.headers.get('KEY') == '123456789':
            return True  # 跳过写入日志的过程
        return False

def add(self,keys,param):
    #插入数据
    self.write_lock()
    self.clear_files()
    self.__GetConn()
    self.__DB_CONN.text_factory = str
    param = self.en_crypt(keys,param)
    if self.is_insert_log(request):
        return

    try:
        values=""
        for key in keys.split(','):
            values += "?,"
        values = values[0:len(values)-1]
        sql = "INSERT INTO " + self.__DB_TABLE+"("+keys+") "+"VALUES("+values+")"
        result = self.__DB_CONN.execute(sql,self.__to_tuple(param))
        id = result.lastrowid
        self._close()
        self.__DB_CONN.commit()
        self.rm_lock()
        return id
    except Exception as ex:
        raise public.PanelError("数据库插入出错:" + "error: " + str(ex))
        # return "error: " + str(ex)

将上面携带的 123456789 修改为你指定的KEY,在浏览器端只需要在Header中加入KEY=123456789就能实现不记录日志功能。记得还要执行:bt 4 重载宝塔面板代码。

d2b5ca33bd20250729093327

日志记录第二处:

找到 /www/server/panel/class/public.py代码中的WriteFile函数

d2b5ca33bd20250729094126

修改为:

def WriteFile(filename, s_body, mode='w+'):
    """
    写入文件内容
    @filename 文件名
    @s_body 欲写入的内容
    return bool 若文件不存在则尝试自动创建
    """
    try:
        if 'request' in filename and request.headers.get('KEY') == '123456789':
            return
        fp = open(filename, mode)
        fp.write(s_body)
        fp.close()
        return True
    except:
        try:
            fp = open(filename, mode, encoding="utf-8")
            fp.write(s_body)
            fp.close()
            return True
        except:
            return False

其中的KEY照旧。

第三处代码:

文件位置:/www/server/panel/class/userlogin.py

代码位置:def _set_login_session 函数中的 public.writeFile(last_file, json.dumps(res))

修改为:

if request.headers.get('KEY') != '123456789':
    public.writeFile(last_file, json.dumps(res))

d2b5ca33bd20250729094903

重点说明

上面两处都需要在代码头部引入 from flask import request 切记一定要引入,否则将报错。

public.py

db.py

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容