自动创建Lets续期计划任务

pull/267/head
midoks 3 years ago
parent e33bf94a17
commit 217b42eae3
  1. 70
      class/core/cert_api.py
  2. 8
      class/core/common.py
  3. 26
      class/core/db.py

@ -113,8 +113,8 @@ class cert_api:
return self.__config
return self.__config
# 写配置文件
def saveConfig(self):
# 写配置文件
fp = open(self.__cfg_file, 'w+')
fcntl.flock(fp, fcntl.LOCK_EX) # 加锁
fp.write(json.dumps(self.__config))
@ -122,9 +122,75 @@ class cert_api:
fp.close()
return True
def createCertCron(self):
# 创建证书自动续签任务
try:
import crontab_api
api = crontab_api.crontab_api()
echo = mw.md5(mw.md5('panel_renew_lets_cron'))
cron_id = mw.M('crontab').where('echo=?', (echo,)).getField('id')
cron_path = mw.getServerDir() + '/cron'
if not os.path.exists(cron_path):
mw.execShell('mkdir -p ' + cron_path)
shell = 'python3 -u {}/class/core/cert_api.py --renew=1'.format(
mw.getRunDir())
logs_file = cron_path + '/' + echo + '.log'
cmd = '''#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
dst_dir=%s
logs_file=%s
cd $dst_dir
if [ -f bin/activate ];then
source bin/activate
fi
''' % (mw.getRunDir(), logs_file)
cmd += 'echo "★【`date +"%Y-%m-%d %H:%M:%S"`】 STSRT★" >> $logs_file' + "\n"
cmd += 'echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $logs_file' + "\n"
cmd += 'cd $dst_dir && ' + shell + ' >> $logs_file 2>&1' + "\n"
cmd += 'echo "【`date +"%Y-%m-%d %H:%M:%S"`】 END★" >> $logs_file' + "\n"
cmd += 'echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> $logs_file' + "\n"
file = cron_path + '/' + echo
if type(cron_id) != int:
mw.writeFile(file, cmd)
mw.execShell('chmod 750 ' + file)
info = {}
info['type'] = 'day'
info['minute'] = '10'
info['hour'] = '0'
shell_cron, rinfo, name = api.getCrondCycle(info)
shell_cron += ' ' + cron_path + '/' + echo + \
' >> ' + logs_file + ' 2>&1'
api.writeShell(shell_cron)
insert_id = mw.M('crontab').add('name,type,where1,where_hour,where_minute,echo,addtime,status,save,backup_to,stype,sname,sbody,urladdress', (
"续签Let's Encrypt证书", 'day', '', '0', '10', echo, time.strftime('%Y-%m-%d %X', time.localtime()), '1', '', 'localhost', 'toShell', '', cmd, ''))
if insert_id > 0:
print('创建证书自动续签任务成功!')
else:
mw.writeFile(file, cmd)
mw.execShell('chmod 750 ' + file)
mw.M('crontab').where('id=?', (cron_id)).save('sbody', (cmd,))
except Exception as e:
print(mw.getTracebackInfo())
def getApis(self):
if not self.__apis:
# 尝试从配置文件中获取
# 尝试从配置文件中获取
api_index = self.__mod_index[self.__debug]
if not 'apis' in self.__config:
self.__config['apis'] = {}

@ -23,6 +23,7 @@ def init():
initDB()
initUserInfo()
initInitD()
initInitTask()
def local():
@ -102,6 +103,13 @@ def initInitD():
mw.setHostAddr(mw.getLocalIp())
def initInitTask():
# 创建证书同步命令
import cert_api
api = cert_api.cert_api()
api.createCertCron()
def initUserInfo():
data = mw.M('users').where('id=?', (1,)).getField('password')

@ -23,7 +23,7 @@ class Sql():
def __init__(self):
self.__DB_FILE = 'data/default.db'
def __GetConn(self):
def __getConn(self):
# 取数据库对象
try:
if self.__DB_CONN == None:
@ -100,10 +100,11 @@ class Sql():
def select(self):
# 查询数据集
self.__GetConn()
self.__getConn()
try:
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \
self.__OPT_WHERE + self.__OPT_GROUP + self.__OPT_ORDER + self.__OPT_LIMIT
# print(sql)
result = self.__DB_CONN.execute(sql, self.__OPT_PARAM)
data = result.fetchall()
# 构造字曲系列
@ -133,7 +134,7 @@ class Sql():
def inquiry(self, input_field=''):
# 查询数据集
# 不清空查询参数
self.__GetConn()
self.__getConn()
try:
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \
self.__OPT_WHERE + self.__OPT_GROUP + self.__OPT_ORDER + self.__OPT_LIMIT
@ -171,6 +172,7 @@ class Sql():
def getField(self, keyName):
# 取回指定字段
result = self.field(keyName).select()
# print(result)
if len(result) == 1:
return result[0][keyName]
return result
@ -197,7 +199,7 @@ class Sql():
def add(self, keys, param):
# 插入数据
self.__GetConn()
self.__getConn()
try:
values = ""
for key in keys.split(','):
@ -256,7 +258,7 @@ class Sql():
def addAll(self, keys, param):
# 插入数据
self.__GetConn()
self.__getConn()
try:
values = ""
for key in keys.split(','):
@ -275,7 +277,7 @@ class Sql():
def save(self, keys, param):
# 更新数据
self.__GetConn()
self.__getConn()
try:
opt = ""
for key in keys.split(','):
@ -300,7 +302,7 @@ class Sql():
def delete(self, id=None):
# 删除数据
self.__GetConn()
self.__getConn()
try:
if id:
self.__OPT_WHERE = " WHERE id=?"
@ -314,7 +316,7 @@ class Sql():
return "error: " + str(ex)
def originExecute(self, sql, param=()):
self.__GetConn()
self.__getConn()
try:
result = self.__DB_CONN.execute(sql, param)
self.__DB_CONN.commit()
@ -324,7 +326,7 @@ class Sql():
def execute(self, sql, param=()):
# 执行SQL语句返回受影响行
self.__GetConn()
self.__getConn()
# print sql, param
try:
result = self.__DB_CONN.execute(sql, param)
@ -335,7 +337,7 @@ class Sql():
def query(self, sql, param):
# 执行SQL语句返回数据集
self.__GetConn()
self.__getConn()
try:
result = self.__DB_CONN.execute(sql, param)
# 将元组转换成列表
@ -346,7 +348,7 @@ class Sql():
def create(self, name):
# 创建数据表
self.__GetConn()
self.__getConn()
import mw
script = mw.readFile('data/' + name + '.sql')
result = self.__DB_CONN.executescript(script)
@ -355,7 +357,7 @@ class Sql():
def fofile(self, filename):
# 执行脚本
self.__GetConn()
self.__getConn()
import mw
script = mw.readFile(filename)
result = self.__DB_CONN.executescript(script)

Loading…
Cancel
Save