mirror of https://github.com/tp4a/teleport
实现定时清除过期日志和录像的功能。
parent
3ba80f02d2
commit
a7099228e6
|
@ -1,7 +1,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from app.const import *
|
||||||
from app.base.cron import tp_cron
|
from app.base.cron import tp_cron
|
||||||
|
from app.base.configs import tp_cfg
|
||||||
|
from app.base.logger import log
|
||||||
from app.model import ops
|
from app.model import ops
|
||||||
|
from app.model import record
|
||||||
|
|
||||||
|
|
||||||
def tp_init_jobs():
|
def tp_init_jobs():
|
||||||
|
@ -10,8 +15,28 @@ def tp_init_jobs():
|
||||||
# 每隔一个小时清理一次过期的远程连接授权码
|
# 每隔一个小时清理一次过期的远程连接授权码
|
||||||
cron.add_job('clean_expired_ops_token', _job_clean_expired_ops_token, first_interval_seconds=10, interval_seconds=3600)
|
cron.add_job('clean_expired_ops_token', _job_clean_expired_ops_token, first_interval_seconds=10, interval_seconds=3600)
|
||||||
|
|
||||||
|
# 每50秒检查一下是否要到了每日清理系统日志和会话记录的时间了,到了则执行清理操作
|
||||||
|
cron.add_job('check_and_clean_log_and_record', _job_clean_log_and_record, interval_seconds=50)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _job_clean_expired_ops_token():
|
def _job_clean_expired_ops_token():
|
||||||
|
log.v('clean expired ops token.\n')
|
||||||
ops.clean_expired_ops_token()
|
ops.clean_expired_ops_token()
|
||||||
|
|
||||||
|
|
||||||
|
def _job_clean_log_and_record():
|
||||||
|
sto = tp_cfg().sys.storage
|
||||||
|
if sto.keep_log == 0 or sto.keep_record == 0:
|
||||||
|
# nothing need remove
|
||||||
|
return
|
||||||
|
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
if not (now.hour == sto.cleanup_hour and now.minute == sto.cleanup_minute):
|
||||||
|
return
|
||||||
|
|
||||||
|
log.v('[cron] time to clean log and record.\n')
|
||||||
|
err, msg = record.cleanup_log_and_record()
|
||||||
|
for m in msg:
|
||||||
|
log.v('[cron] {}\n'.format(m))
|
||||||
|
|
|
@ -550,7 +550,10 @@ def session_end(record_id, ret_code):
|
||||||
|
|
||||||
@tornado.gen.coroutine
|
@tornado.gen.coroutine
|
||||||
def cleanup_storage(handler):
|
def cleanup_storage(handler):
|
||||||
# storage config
|
return cleanup_log_and_record()
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup_log_and_record():
|
||||||
sto = tp_cfg().sys.storage
|
sto = tp_cfg().sys.storage
|
||||||
|
|
||||||
db = get_db()
|
db = get_db()
|
||||||
|
@ -562,7 +565,7 @@ def cleanup_storage(handler):
|
||||||
chk_time = _now - sto.keep_log * 24 * 60 * 60
|
chk_time = _now - sto.keep_log * 24 * 60 * 60
|
||||||
|
|
||||||
if sto.keep_log > 0:
|
if sto.keep_log > 0:
|
||||||
# find out all sys-log to be remove
|
# find out all sys-log to be removed
|
||||||
s.select_from('syslog', ['id'], alt_name='s')
|
s.select_from('syslog', ['id'], alt_name='s')
|
||||||
s.where('s.log_time<{chk_time}'.format(chk_time=chk_time))
|
s.where('s.log_time<{chk_time}'.format(chk_time=chk_time))
|
||||||
err = s.query()
|
err = s.query()
|
||||||
|
@ -583,6 +586,7 @@ def cleanup_storage(handler):
|
||||||
else:
|
else:
|
||||||
msg.append('{} 条系统日志已清除!'.format(removed_log))
|
msg.append('{} 条系统日志已清除!'.format(removed_log))
|
||||||
|
|
||||||
|
chk_time = _now - sto.keep_record * 24 * 60 * 60
|
||||||
if sto.keep_record > 0:
|
if sto.keep_record > 0:
|
||||||
core_cfg = tp_cfg().core
|
core_cfg = tp_cfg().core
|
||||||
if not core_cfg.detected:
|
if not core_cfg.detected:
|
||||||
|
@ -594,7 +598,7 @@ def cleanup_storage(handler):
|
||||||
have_error = True
|
have_error = True
|
||||||
msg.append('清除指定会话录像失败:会话录像路径不存在({})!'.format(replay_path))
|
msg.append('清除指定会话录像失败:会话录像路径不存在({})!'.format(replay_path))
|
||||||
else:
|
else:
|
||||||
# find out all record to be remove
|
# find out all record to be removed
|
||||||
s.reset().select_from('record', ['id', 'protocol_type'], alt_name='r')
|
s.reset().select_from('record', ['id', 'protocol_type'], alt_name='r')
|
||||||
s.where('r.time_begin<{chk_time}'.format(chk_time=chk_time))
|
s.where('r.time_begin<{chk_time}'.format(chk_time=chk_time))
|
||||||
err = s.query()
|
err = s.query()
|
||||||
|
|
Loading…
Reference in New Issue