Initial YakPanel commit
This commit is contained in:
146
class/datalistModel/ftpsModel.py
Normal file
146
class/datalistModel/ftpsModel.py
Normal file
@@ -0,0 +1,146 @@
|
||||
# coding: utf-8
|
||||
# -------------------------------------------------------------------
|
||||
# YakPanel
|
||||
# -------------------------------------------------------------------
|
||||
# Copyright (c) 2015-2099 YakPanel(https://www.yakpanel.com) All rights reserved.
|
||||
# -------------------------------------------------------------------
|
||||
# Author: cjxin <cjxin@yakpanel.com>
|
||||
# -------------------------------------------------------------------
|
||||
#
|
||||
# ------------------------------
|
||||
|
||||
import os, sys, time, json, re
|
||||
import traceback
|
||||
|
||||
if '/www/server/panel/class/' not in sys.path:
|
||||
sys.path.insert(0, '/www/server/panel/class/')
|
||||
import public, db
|
||||
import panelSite
|
||||
from datalistModel.base import dataBase
|
||||
|
||||
|
||||
class main(dataBase):
|
||||
web_server = None
|
||||
site_obj = None
|
||||
|
||||
def __init__(self):
|
||||
self.site_obj = panelSite.panelSite()
|
||||
|
||||
"""
|
||||
@name 获取公共数据后,格式化为网站列表需要的数据
|
||||
"""
|
||||
|
||||
def get_data_list(self, get):
|
||||
try:
|
||||
get = self._get_site_args(get)
|
||||
data_list = get.data_list
|
||||
# 获取前端需要的表头
|
||||
from config import config
|
||||
table_header = config().get_table_header(public.to_dict_obj({'table_name': 'ftpTableColumn'}))
|
||||
if table_header['ftpTableColumn'] == '':
|
||||
table_header = ['用户名', '密码', '状态', '复制快速连接信息', '根目录', '设置密码有效期', '容量', '备注', '操作']
|
||||
else:
|
||||
table_header["ftpTableColumn"] = json.loads(table_header["ftpTableColumn"])
|
||||
table_header = [i['title'] if 'title' in i else i['label'] for i in table_header["ftpTableColumn"] if
|
||||
(i.get('value', False) == True or i.get('isCustom', True) == True) and ('label' in i.keys() or 'title' in i.keys())]
|
||||
# 按需加载
|
||||
custom_list = {"容量": "quota", '设置密码有效期': 'end_time'}
|
||||
custom_conf = {'quota': {}, "end_time": {}}
|
||||
paths = []
|
||||
ids = []
|
||||
default_quota = {
|
||||
"used": 0,
|
||||
"size": 0,
|
||||
"quota_push": {
|
||||
"size": 0,
|
||||
"used": 0,
|
||||
},
|
||||
"quota_storage": {
|
||||
"size": 0,
|
||||
"used": 0,
|
||||
}}
|
||||
|
||||
# 用户权限处理
|
||||
user_Data = self.get_user_power()
|
||||
if user_Data != 'all':
|
||||
data_list = [i for i in data_list if str(i['id']) in user_Data.get('ftps', [])]
|
||||
# 用户权限处理结束
|
||||
|
||||
[paths.append(val['path']) or ids.append(val['id']) for val in data_list]
|
||||
for i, j in custom_list.items():
|
||||
if i in table_header:
|
||||
if j == 'quota':
|
||||
custom_conf[j] = self.get_all_quota(paths)
|
||||
if j == 'end_time':
|
||||
custom_conf[j] = self.get_all_ftp_end_time(ids)
|
||||
for i in data_list:
|
||||
i['quota'] = custom_conf['quota'].get(i['path'], default_quota)
|
||||
i['end_time'] = custom_conf['end_time'].get(i['id'], '0')
|
||||
return data_list
|
||||
except:
|
||||
pass
|
||||
|
||||
"""
|
||||
@name 初始化参数
|
||||
"""
|
||||
|
||||
def _get_site_args(self, get):
|
||||
try:
|
||||
if not 'type' in get:
|
||||
get.type = 0
|
||||
get.type = int(get.p)
|
||||
except:
|
||||
get.type = 0
|
||||
|
||||
# if not 'project_type' in get:
|
||||
# get.project_type = 'PHP'
|
||||
# get.search_key = get.project_type.lower()
|
||||
get.search_key = get.table.lower()
|
||||
if hasattr(get, 'search'):
|
||||
public.set_search_history(get.table,get.search_key,get.search)
|
||||
return get
|
||||
|
||||
"""
|
||||
@name 追加 or条件
|
||||
"""
|
||||
|
||||
def get_search_where(self, get):
|
||||
|
||||
where = ''
|
||||
params = get.search
|
||||
|
||||
conditions = ''
|
||||
if '_' in get.search:
|
||||
conditions = " escape '/'"
|
||||
if params:
|
||||
where = "name LIKE ? OR ps LIKE ? {}".format(conditions)
|
||||
params = ('%' + params + '%', '%' + params + '%')
|
||||
return where, params
|
||||
|
||||
|
||||
"""
|
||||
@获取ftp查询条件,追加and查询条件
|
||||
"""
|
||||
|
||||
def get_data_where(self, get):
|
||||
wheres = []
|
||||
get = self._get_site_args(get)
|
||||
if "type_id" in get and get.type_id:
|
||||
type_id = get.get("type_id")
|
||||
wheres.append("type_id = {}".format(type_id))
|
||||
return wheres
|
||||
|
||||
# 获取fto到期时间
|
||||
def get_all_ftp_end_time(self, ids):
|
||||
config_path = '/www/server/panel/data/ftp_push_config.json'
|
||||
if not os.path.exists(config_path):
|
||||
return {i: "0" for i in ids}
|
||||
config = json.loads(public.readFile(config_path))
|
||||
content = {}
|
||||
for _, i in config.items():
|
||||
if _ == 'channel':
|
||||
continue
|
||||
for j in i:
|
||||
content[j['id']] = j['end_time']
|
||||
return {i: content[i] if i in content.keys() else '0' for i in ids}
|
||||
|
||||
Reference in New Issue
Block a user