mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-10 04:59:25 +08:00
u
This commit is contained in:
+133
-147
@@ -1,91 +1,82 @@
|
||||
#coding: utf-8
|
||||
# +-------------------------------------------------------------------
|
||||
# | 宝塔Linux面板
|
||||
# +-------------------------------------------------------------------
|
||||
# | Copyright (c) 2015-2016 宝塔软件(http://bt.cn) All rights reserved.
|
||||
# +-------------------------------------------------------------------
|
||||
# | Author: 黄文良 <287962566@qq.com>
|
||||
# +-------------------------------------------------------------------
|
||||
# coding: utf-8
|
||||
|
||||
|
||||
import sqlite3
|
||||
import os
|
||||
|
||||
|
||||
class Sql():
|
||||
#------------------------------
|
||||
# 数据库操作类 For sqlite3
|
||||
#------------------------------
|
||||
__DB_FILE = None # 数据库文件
|
||||
__DB_CONN = None # 数据库连接对象
|
||||
__DB_TABLE = "" # 被操作的表名称
|
||||
__OPT_WHERE = "" # where条件
|
||||
__OPT_LIMIT = "" # limit条件
|
||||
__OPT_ORDER = "" # order条件
|
||||
__OPT_FIELD = "*" # field条件
|
||||
__OPT_PARAM = () # where值
|
||||
|
||||
__DB_FILE = None # 数据库文件
|
||||
__DB_CONN = None # 数据库连接对象
|
||||
__DB_TABLE = "" # 被操作的表名称
|
||||
__OPT_WHERE = "" # where条件
|
||||
__OPT_LIMIT = "" # limit条件
|
||||
__OPT_ORDER = "" # order条件
|
||||
__OPT_FIELD = "*" # field条件
|
||||
__OPT_PARAM = () # where值
|
||||
|
||||
def __init__(self):
|
||||
self.__DB_FILE = 'data/default.db'
|
||||
|
||||
def __GetConn(self):
|
||||
#取数据库对象
|
||||
|
||||
def __GetConn(self):
|
||||
# 取数据库对象
|
||||
try:
|
||||
if self.__DB_CONN == None:
|
||||
self.__DB_CONN = sqlite3.connect(self.__DB_FILE)
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def dbfile(self,name):
|
||||
|
||||
def dbfile(self, name):
|
||||
self.__DB_FILE = 'data/' + name + '.db'
|
||||
return self
|
||||
|
||||
def table(self,table):
|
||||
#设置表名
|
||||
|
||||
def table(self, table):
|
||||
# 设置表名
|
||||
self.__DB_TABLE = table
|
||||
return self
|
||||
|
||||
|
||||
def where(self,where,param):
|
||||
#WHERE条件
|
||||
|
||||
def where(self, where, param):
|
||||
# WHERE条件
|
||||
if where:
|
||||
self.__OPT_WHERE = " WHERE " + where
|
||||
self.__OPT_PARAM = param
|
||||
return self
|
||||
|
||||
|
||||
def order(self,order):
|
||||
#ORDER条件
|
||||
|
||||
def order(self, order):
|
||||
# ORDER条件
|
||||
if len(order):
|
||||
self.__OPT_ORDER = " ORDER BY "+order
|
||||
self.__OPT_ORDER = " ORDER BY " + order
|
||||
return self
|
||||
|
||||
|
||||
def limit(self,limit):
|
||||
#LIMIT条件
|
||||
|
||||
def limit(self, limit):
|
||||
# LIMIT条件
|
||||
if len(limit):
|
||||
self.__OPT_LIMIT = " LIMIT "+limit
|
||||
self.__OPT_LIMIT = " LIMIT " + limit
|
||||
return self
|
||||
|
||||
|
||||
def field(self,field):
|
||||
#FIELD条件
|
||||
|
||||
def field(self, field):
|
||||
# FIELD条件
|
||||
if len(field):
|
||||
self.__OPT_FIELD = field
|
||||
return self
|
||||
|
||||
|
||||
|
||||
def select(self):
|
||||
#查询数据集
|
||||
# 查询数据集
|
||||
self.__GetConn()
|
||||
try:
|
||||
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + self.__OPT_WHERE + self.__OPT_ORDER + self.__OPT_LIMIT
|
||||
result = self.__DB_CONN.execute(sql,self.__OPT_PARAM)
|
||||
sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + \
|
||||
self.__OPT_WHERE + self.__OPT_ORDER + self.__OPT_LIMIT
|
||||
result = self.__DB_CONN.execute(sql, self.__OPT_PARAM)
|
||||
data = result.fetchall()
|
||||
#构造字曲系列
|
||||
# 构造字曲系列
|
||||
if self.__OPT_FIELD != "*":
|
||||
field = self.__OPT_FIELD.split(',')
|
||||
tmp = []
|
||||
for row in data:
|
||||
i=0
|
||||
i = 0
|
||||
tmp1 = {}
|
||||
for key in field:
|
||||
tmp1[key] = row[i]
|
||||
@@ -95,196 +86,191 @@ class Sql():
|
||||
data = tmp
|
||||
del(tmp)
|
||||
else:
|
||||
#将元组转换成列表
|
||||
tmp = map(list,data)
|
||||
# 将元组转换成列表
|
||||
tmp = map(list, data)
|
||||
data = tmp
|
||||
del(tmp)
|
||||
self.__close()
|
||||
return data
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
|
||||
def getField(self,keyName):
|
||||
#取回指定字段
|
||||
result = self.field(keyName).select();
|
||||
|
||||
def getField(self, keyName):
|
||||
# 取回指定字段
|
||||
result = self.field(keyName).select()
|
||||
if len(result) == 1:
|
||||
return result[0][keyName]
|
||||
return result
|
||||
|
||||
|
||||
def setField(self,keyName,keyValue):
|
||||
#更新指定字段
|
||||
return self.save(keyName,(keyValue,))
|
||||
|
||||
|
||||
|
||||
def setField(self, keyName, keyValue):
|
||||
# 更新指定字段
|
||||
return self.save(keyName, (keyValue,))
|
||||
|
||||
def find(self):
|
||||
#取一行数据
|
||||
# 取一行数据
|
||||
result = self.limit("1").select()
|
||||
if len(result) == 1:
|
||||
return result[0]
|
||||
return result
|
||||
|
||||
|
||||
|
||||
def count(self):
|
||||
#取行数
|
||||
key="COUNT(*)"
|
||||
# 取行数
|
||||
key = "COUNT(*)"
|
||||
data = self.field(key).select()
|
||||
try:
|
||||
return int(data[0][key])
|
||||
except:
|
||||
return 0
|
||||
|
||||
|
||||
def add(self,keys,param):
|
||||
#插入数据
|
||||
|
||||
def add(self, keys, param):
|
||||
# 插入数据
|
||||
self.__GetConn()
|
||||
self.__DB_CONN.text_factory = str
|
||||
try:
|
||||
values=""
|
||||
values = ""
|
||||
for key in keys.split(','):
|
||||
values += "?,"
|
||||
values = self.checkInput(values[0:len(values)-1]);
|
||||
sql = "INSERT INTO "+self.__DB_TABLE+"("+keys+") "+"VALUES("+values+")"
|
||||
result = self.__DB_CONN.execute(sql,param)
|
||||
values = self.checkInput(values[0:len(values) - 1])
|
||||
sql = "INSERT INTO " + self.__DB_TABLE + \
|
||||
"(" + keys + ") " + "VALUES(" + values + ")"
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
id = result.lastrowid
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return id
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def checkInput(self,data):
|
||||
if not data: return data;
|
||||
if type(data) != str: return data;
|
||||
checkList = [
|
||||
{'d':'<','r':'<'},
|
||||
{'d':'>','r':'>'},
|
||||
{'d':'\'','r':'‘'},
|
||||
{'d':'"','r':'“'},
|
||||
{'d':'&','r':'&'},
|
||||
{'d':'#','r':'#'},
|
||||
{'d':'<','r':'<'}
|
||||
]
|
||||
for v in checkList:
|
||||
data = data.replace(v['d'],v['r']);
|
||||
return data;
|
||||
|
||||
def addAll(self,keys,param):
|
||||
#插入数据
|
||||
|
||||
def checkInput(self, data):
|
||||
if not data:
|
||||
return data
|
||||
if type(data) != str:
|
||||
return data
|
||||
checkList = [
|
||||
{'d': '<', 'r': '<'},
|
||||
{'d': '>', 'r': '>'},
|
||||
{'d': '\'', 'r': '‘'},
|
||||
{'d': '"', 'r': '“'},
|
||||
{'d': '&', 'r': '&'},
|
||||
{'d': '#', 'r': '#'},
|
||||
{'d': '<', 'r': '<'}
|
||||
]
|
||||
for v in checkList:
|
||||
data = data.replace(v['d'], v['r'])
|
||||
return data
|
||||
|
||||
def addAll(self, keys, param):
|
||||
# 插入数据
|
||||
self.__GetConn()
|
||||
self.__DB_CONN.text_factory = str
|
||||
try:
|
||||
values=""
|
||||
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,param)
|
||||
values = values[0:len(values) - 1]
|
||||
sql = "INSERT INTO " + self.__DB_TABLE + \
|
||||
"(" + keys + ") " + "VALUES(" + values + ")"
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
return True
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
|
||||
def commit(self):
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
|
||||
|
||||
def save(self,keys,param):
|
||||
#更新数据
|
||||
|
||||
def save(self, keys, param):
|
||||
# 更新数据
|
||||
self.__GetConn()
|
||||
self.__DB_CONN.text_factory = str
|
||||
try:
|
||||
opt = ""
|
||||
for key in keys.split(','):
|
||||
opt += key + "=?,"
|
||||
opt = opt[0:len(opt)-1]
|
||||
sql = "UPDATE " + self.__DB_TABLE + " SET " + opt+self.__OPT_WHERE
|
||||
|
||||
opt = opt[0:len(opt) - 1]
|
||||
sql = "UPDATE " + self.__DB_TABLE + " SET " + opt + self.__OPT_WHERE
|
||||
|
||||
import public
|
||||
public.writeFile('/tmp/test.pl',sql)
|
||||
|
||||
#处理拼接WHERE与UPDATE参数
|
||||
public.writeFile('/tmp/test.pl', sql)
|
||||
|
||||
# 处理拼接WHERE与UPDATE参数
|
||||
tmp = list(param)
|
||||
for arg in self.__OPT_PARAM:
|
||||
tmp.append(arg)
|
||||
self.__OPT_PARAM = tuple(tmp)
|
||||
result = self.__DB_CONN.execute(sql,self.__OPT_PARAM)
|
||||
result = self.__DB_CONN.execute(sql, self.__OPT_PARAM)
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def delete(self,id=None):
|
||||
#删除数据
|
||||
|
||||
def delete(self, id=None):
|
||||
# 删除数据
|
||||
self.__GetConn()
|
||||
try:
|
||||
if id:
|
||||
self.__OPT_WHERE = " WHERE id=?"
|
||||
self.__OPT_PARAM = (id,)
|
||||
sql = "DELETE FROM " + self.__DB_TABLE + self.__OPT_WHERE
|
||||
result = self.__DB_CONN.execute(sql,self.__OPT_PARAM)
|
||||
result = self.__DB_CONN.execute(sql, self.__OPT_PARAM)
|
||||
self.__close()
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
|
||||
def execute(self,sql,param):
|
||||
#执行SQL语句返回受影响行
|
||||
|
||||
def execute(self, sql, param):
|
||||
# 执行SQL语句返回受影响行
|
||||
self.__GetConn()
|
||||
try:
|
||||
result = self.__DB_CONN.execute(sql,param)
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
|
||||
def query(self,sql,param):
|
||||
#执行SQL语句返回数据集
|
||||
|
||||
def query(self, sql, param):
|
||||
# 执行SQL语句返回数据集
|
||||
self.__GetConn()
|
||||
try:
|
||||
result = self.__DB_CONN.execute(sql,param)
|
||||
#将元组转换成列表
|
||||
data = map(list,result)
|
||||
result = self.__DB_CONN.execute(sql, param)
|
||||
# 将元组转换成列表
|
||||
data = map(list, result)
|
||||
return data
|
||||
except Exception,ex:
|
||||
except Exception, ex:
|
||||
return "error: " + str(ex)
|
||||
|
||||
def create(self,name):
|
||||
#创建数据表
|
||||
|
||||
def create(self, name):
|
||||
# 创建数据表
|
||||
self.__GetConn()
|
||||
import public
|
||||
script = public.readFile('data/' + name + '.sql')
|
||||
result = self.__DB_CONN.executescript(script)
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
|
||||
def fofile(self,filename):
|
||||
#执行脚本
|
||||
|
||||
def fofile(self, filename):
|
||||
# 执行脚本
|
||||
self.__GetConn()
|
||||
import public
|
||||
script = public.readFile(filename)
|
||||
result = self.__DB_CONN.executescript(script)
|
||||
self.__DB_CONN.commit()
|
||||
return result.rowcount
|
||||
|
||||
|
||||
def __close(self):
|
||||
#清理条件属性
|
||||
# 清理条件属性
|
||||
self.__OPT_WHERE = ""
|
||||
self.__OPT_FIELD = "*"
|
||||
self.__OPT_ORDER = ""
|
||||
self.__OPT_LIMIT = ""
|
||||
self.__OPT_PARAM = ()
|
||||
|
||||
|
||||
def close(self):
|
||||
#释放资源
|
||||
# 释放资源
|
||||
try:
|
||||
self.__DB_CONN.close()
|
||||
self.__DB_CONN = None
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
+153
-138
@@ -1,207 +1,222 @@
|
||||
#coding: utf-8
|
||||
# +-------------------------------------------------------------------
|
||||
# | 宝塔Linux面板
|
||||
# +-------------------------------------------------------------------
|
||||
# | Copyright (c) 2015-2016 宝塔软件(http://bt.cn) All rights reserved.
|
||||
# +-------------------------------------------------------------------
|
||||
# | Author: 黄文良 <2879625666@qq.com>
|
||||
# +-------------------------------------------------------------------
|
||||
import math,string,public
|
||||
# coding: utf-8
|
||||
|
||||
import math
|
||||
import string
|
||||
import public
|
||||
|
||||
|
||||
class Page():
|
||||
#--------------------------
|
||||
# 分页类 - JS回调版
|
||||
#--------------------------
|
||||
__PREV = '上一页'
|
||||
__NEXT = '下一页'
|
||||
__START = '首页'
|
||||
__END = '尾页'
|
||||
__COUNT_START = '共'
|
||||
__COUNT_END = '条数据'
|
||||
__FO = '从'
|
||||
__LINE = '条'
|
||||
__LIST_NUM = 4
|
||||
SHIFT = None #偏移量
|
||||
ROW = None #每页行数
|
||||
__C_PAGE = None #当前页
|
||||
__COUNT_PAGE = None #总页数
|
||||
__COUNT_ROW = None #总行数
|
||||
__URI = None #URI
|
||||
__RTURN_JS = False #是否返回JS回调
|
||||
__START_NUM = None #起始行
|
||||
__END_NUM = None #结束行
|
||||
|
||||
__PREV = '上一页'
|
||||
__NEXT = '下一页'
|
||||
__START = '首页'
|
||||
__END = '尾页'
|
||||
__COUNT_START = '共'
|
||||
__COUNT_END = '条数据'
|
||||
__FO = '从'
|
||||
__LINE = '条'
|
||||
__LIST_NUM = 4
|
||||
SHIFT = None # 偏移量
|
||||
ROW = None # 每页行数
|
||||
__C_PAGE = None # 当前页
|
||||
__COUNT_PAGE = None # 总页数
|
||||
__COUNT_ROW = None # 总行数
|
||||
__URI = None # URI
|
||||
__RTURN_JS = False # 是否返回JS回调
|
||||
__START_NUM = None # 起始行
|
||||
__END_NUM = None # 结束行
|
||||
|
||||
def __init__(self):
|
||||
tmp = public.getMsg('PAGE');
|
||||
tmp = public.getMsg('PAGE')
|
||||
if tmp:
|
||||
self.__PREV = tmp['PREV'];
|
||||
self.__NEXT = tmp['NEXT'];
|
||||
self.__START = tmp['START'];
|
||||
self.__END = tmp['END'];
|
||||
self.__COUNT_START = tmp['COUNT_START'];
|
||||
self.__COUNT_END = tmp['COUNT_END'];
|
||||
self.__FO = tmp['FO'];
|
||||
self.__LINE = tmp['LINE'];
|
||||
|
||||
def GetPage(self,pageInfo,limit = '1,2,3,4,5,6,7,8'):
|
||||
self.__PREV = tmp['PREV']
|
||||
self.__NEXT = tmp['NEXT']
|
||||
self.__START = tmp['START']
|
||||
self.__END = tmp['END']
|
||||
self.__COUNT_START = tmp['COUNT_START']
|
||||
self.__COUNT_END = tmp['COUNT_END']
|
||||
self.__FO = tmp['FO']
|
||||
self.__LINE = tmp['LINE']
|
||||
|
||||
def GetPage(self, pageInfo, limit='1,2,3,4,5,6,7,8'):
|
||||
# 取分页信息
|
||||
# @param pageInfo 传入分页参数字典
|
||||
# @param limit 返回系列
|
||||
self.__RTURN_JS = pageInfo['return_js']
|
||||
self.__COUNT_ROW = pageInfo['count']
|
||||
self.ROW = pageInfo['row']
|
||||
self.__C_PAGE = self.__GetCpage(pageInfo['p'])
|
||||
self.__START_NUM = self.__StartRow()
|
||||
self.__END_NUM = self.__EndRow()
|
||||
self.__COUNT_PAGE = self.__GetCountPage()
|
||||
self.__URI = self.__SetUri(pageInfo['uri'])
|
||||
self.SHIFT = self.__START_NUM - 1
|
||||
|
||||
self.__RTURN_JS = pageInfo['return_js']
|
||||
self.__COUNT_ROW = pageInfo['count']
|
||||
self.ROW = pageInfo['row']
|
||||
self.__C_PAGE = self.__GetCpage(pageInfo['p'])
|
||||
self.__START_NUM = self.__StartRow()
|
||||
self.__END_NUM = self.__EndRow()
|
||||
self.__COUNT_PAGE = self.__GetCountPage()
|
||||
self.__URI = self.__SetUri(pageInfo['uri'])
|
||||
self.SHIFT = self.__START_NUM - 1
|
||||
|
||||
keys = limit.split(',')
|
||||
|
||||
|
||||
pages = {}
|
||||
#起始页
|
||||
# 起始页
|
||||
pages['1'] = self.__GetStart()
|
||||
#上一页
|
||||
# 上一页
|
||||
pages['2'] = self.__GetPrev()
|
||||
#分页
|
||||
# 分页
|
||||
pages['3'] = self.__GetPages()
|
||||
#下一页
|
||||
# 下一页
|
||||
pages['4'] = self.__GetNext()
|
||||
#尾页
|
||||
# 尾页
|
||||
pages['5'] = self.__GetEnd()
|
||||
|
||||
#当前显示页与总页数
|
||||
pages['6'] = "<span class='Pnumber'>" + bytes(self.__C_PAGE) + "/" + bytes(self.__COUNT_PAGE) + "</span>"
|
||||
#本页显示开始与结束行
|
||||
pages['7'] = "<span class='Pline'>" + self.__FO + bytes(self.__START_NUM) + "-" + bytes(self.__END_NUM) + self.__LINE + "</span>"
|
||||
#行数
|
||||
pages['8'] = "<span class='Pcount'>" + self.__COUNT_START + bytes(self.__COUNT_ROW) + self.__COUNT_END + "</span>"
|
||||
|
||||
#构造返回数据
|
||||
retuls = '<div>';
|
||||
|
||||
# 当前显示页与总页数
|
||||
pages['6'] = "<span class='Pnumber'>" + \
|
||||
bytes(self.__C_PAGE) + "/" + bytes(self.__COUNT_PAGE) + "</span>"
|
||||
# 本页显示开始与结束行
|
||||
pages['7'] = "<span class='Pline'>" + self.__FO + \
|
||||
bytes(self.__START_NUM) + "-" + \
|
||||
bytes(self.__END_NUM) + self.__LINE + "</span>"
|
||||
# 行数
|
||||
pages['8'] = "<span class='Pcount'>" + self.__COUNT_START + \
|
||||
bytes(self.__COUNT_ROW) + self.__COUNT_END + "</span>"
|
||||
|
||||
# 构造返回数据
|
||||
retuls = '<div>'
|
||||
for value in keys:
|
||||
retuls += pages[value]
|
||||
retuls +='</div>';
|
||||
|
||||
#返回分页数据
|
||||
return retuls;
|
||||
|
||||
retuls += '</div>'
|
||||
|
||||
# 返回分页数据
|
||||
return retuls
|
||||
|
||||
def __GetEnd(self):
|
||||
#构造尾页
|
||||
# 构造尾页
|
||||
endStr = ""
|
||||
if self.__C_PAGE >= self.__COUNT_PAGE:
|
||||
endStr = '';
|
||||
endStr = ''
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
endStr = "<a class='Pend' href='" + self.__URI + "p=" + bytes(self.__COUNT_PAGE) + "'>" + self.__END + "</a>"
|
||||
endStr = "<a class='Pend' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__COUNT_PAGE) + "'>" + self.__END + "</a>"
|
||||
else:
|
||||
endStr = "<a class='Pend' onclick='" + self.__RTURN_JS + "(" + bytes(self.__COUNT_PAGE) + ")'>" + self.__END + "</a>"
|
||||
endStr = "<a class='Pend' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__COUNT_PAGE) + ")'>" + self.__END + "</a>"
|
||||
return endStr
|
||||
|
||||
|
||||
def __GetNext(self):
|
||||
#构造下一页
|
||||
# 构造下一页
|
||||
nextStr = ""
|
||||
if self.__C_PAGE >= self.__COUNT_PAGE:
|
||||
nextStr = '';
|
||||
nextStr = ''
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
nextStr = "<a class='Pnext' href='" + self.__URI + "p=" + bytes(self.__C_PAGE + 1) + "'>" + self.__NEXT + "</a>"
|
||||
else:
|
||||
nextStr = "<a class='Pnext' onclick='" + self.__RTURN_JS + "(" + bytes(self.__C_PAGE + 1) + ")'>" + self.__NEXT + "</a>"
|
||||
|
||||
nextStr = "<a class='Pnext' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__C_PAGE + 1) + "'>" + self.__NEXT + "</a>"
|
||||
else:
|
||||
nextStr = "<a class='Pnext' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__C_PAGE + 1) + ")'>" + self.__NEXT + "</a>"
|
||||
|
||||
return nextStr
|
||||
|
||||
|
||||
def __GetPages(self):
|
||||
#构造分页
|
||||
# 构造分页
|
||||
pages = ''
|
||||
num = 0
|
||||
#当前页之前
|
||||
num = 0
|
||||
# 当前页之前
|
||||
if (self.__COUNT_PAGE - self.__C_PAGE) < self.__LIST_NUM:
|
||||
num = self.__LIST_NUM + (self.__LIST_NUM - (self.__COUNT_PAGE - self.__C_PAGE));
|
||||
num = self.__LIST_NUM + \
|
||||
(self.__LIST_NUM - (self.__COUNT_PAGE - self.__C_PAGE))
|
||||
else:
|
||||
num = self.__LIST_NUM
|
||||
n = 0
|
||||
for i in range(num):
|
||||
n = num - i
|
||||
page = self.__C_PAGE - n;
|
||||
page = self.__C_PAGE - n
|
||||
if page > 0:
|
||||
if self.__RTURN_JS == "":
|
||||
pages += "<a class='Pnum' href='" + self.__URI + "p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
pages += "<a class='Pnum' href='" + self.__URI + \
|
||||
"p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
else:
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + "(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
|
||||
#当前页
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
|
||||
# 当前页
|
||||
if self.__C_PAGE > 0:
|
||||
pages += "<span class='Pcurrent'>" + bytes(self.__C_PAGE) + "</span>"
|
||||
|
||||
#当前页之后
|
||||
pages += "<span class='Pcurrent'>" + \
|
||||
bytes(self.__C_PAGE) + "</span>"
|
||||
|
||||
# 当前页之后
|
||||
if self.__C_PAGE <= self.__LIST_NUM:
|
||||
num = self.__LIST_NUM + (self.__LIST_NUM - self.__C_PAGE) + 1
|
||||
else:
|
||||
num = self.__LIST_NUM;
|
||||
num = self.__LIST_NUM
|
||||
for i in range(num):
|
||||
if i == 0:
|
||||
continue
|
||||
page = self.__C_PAGE + i;
|
||||
page = self.__C_PAGE + i
|
||||
if page > self.__COUNT_PAGE:
|
||||
break;
|
||||
break
|
||||
if self.__RTURN_JS == "":
|
||||
pages += "<a class='Pnum' href='" + self.__URI + "p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
else:
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + "(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
|
||||
return pages;
|
||||
|
||||
def __GetPrev(self):
|
||||
#构造上一页
|
||||
startStr = ''
|
||||
if self.__C_PAGE == 1:
|
||||
startStr = '';
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Ppren' href='" + self.__URI + "p=" + bytes(self.__C_PAGE - 1) + "'>" + self.__PREV + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Ppren' onclick='" + self.__RTURN_JS + "(" + bytes(self.__C_PAGE - 1) + ")'>" + self.__PREV + "</a>"
|
||||
return startStr
|
||||
|
||||
def __GetStart(self):
|
||||
#构造起始分页
|
||||
startStr = ''
|
||||
if self.__C_PAGE == 1:
|
||||
startStr = '';
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Pstart' href='" + self.__URI + "p=1'>" + self.__START + "</a>"
|
||||
pages += "<a class='Pnum' href='" + self.__URI + \
|
||||
"p=" + bytes(page) + "'>" + bytes(page) + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Pstart' onclick='" + self.__RTURN_JS + "(1)'>" + self.__START + "</a>"
|
||||
return startStr;
|
||||
|
||||
def __GetCpage(self,p):
|
||||
#取当前页
|
||||
pages += "<a class='Pnum' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(page) + ")'>" + bytes(page) + "</a>"
|
||||
|
||||
return pages
|
||||
|
||||
def __GetPrev(self):
|
||||
# 构造上一页
|
||||
startStr = ''
|
||||
if self.__C_PAGE == 1:
|
||||
startStr = ''
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Ppren' href='" + self.__URI + "p=" + \
|
||||
bytes(self.__C_PAGE - 1) + "'>" + self.__PREV + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Ppren' onclick='" + self.__RTURN_JS + \
|
||||
"(" + bytes(self.__C_PAGE - 1) + ")'>" + self.__PREV + "</a>"
|
||||
return startStr
|
||||
|
||||
def __GetStart(self):
|
||||
# 构造起始分页
|
||||
startStr = ''
|
||||
if self.__C_PAGE == 1:
|
||||
startStr = ''
|
||||
else:
|
||||
if self.__RTURN_JS == "":
|
||||
startStr = "<a class='Pstart' href='" + \
|
||||
self.__URI + "p=1'>" + self.__START + "</a>"
|
||||
else:
|
||||
startStr = "<a class='Pstart' onclick='" + \
|
||||
self.__RTURN_JS + "(1)'>" + self.__START + "</a>"
|
||||
return startStr
|
||||
|
||||
def __GetCpage(self, p):
|
||||
# 取当前页
|
||||
if p:
|
||||
return p
|
||||
return 1
|
||||
|
||||
|
||||
def __StartRow(self):
|
||||
#从多少行开始
|
||||
# 从多少行开始
|
||||
return (self.__C_PAGE - 1) * self.ROW + 1
|
||||
|
||||
|
||||
def __EndRow(self):
|
||||
#从多少行结束
|
||||
# 从多少行结束
|
||||
if self.ROW > self.__COUNT_ROW:
|
||||
return self.__COUNT_ROW
|
||||
return self.__C_PAGE * self.ROW
|
||||
|
||||
|
||||
def __GetCountPage(self):
|
||||
#取总页数
|
||||
# 取总页数
|
||||
return int(math.ceil(self.__COUNT_ROW / float(self.ROW)))
|
||||
|
||||
def __SetUri(self,input):
|
||||
#构造URI
|
||||
|
||||
def __SetUri(self, input):
|
||||
# 构造URI
|
||||
uri = '?'
|
||||
for key in input:
|
||||
if key == 'p':
|
||||
continue
|
||||
uri += key+'='+input[key]+'&'
|
||||
uri += key + '=' + input[key] + '&'
|
||||
return str(uri)
|
||||
|
||||
+16
-40
@@ -72,22 +72,6 @@ def GetRandomString(length):
|
||||
return str
|
||||
|
||||
|
||||
def checkCode(code, outime=120):
|
||||
# 校验验证码
|
||||
import web
|
||||
try:
|
||||
if md5(code.lower()) != web.ctx.session.codeStr:
|
||||
web.ctx.session.login_error = getMsg('CODE_ERR')
|
||||
return False
|
||||
if time.time() - web.ctx.session.codeTime > outime:
|
||||
web.ctx.session.login_error = getMsg('CODE_TIMEOUT')
|
||||
return False
|
||||
return True
|
||||
except:
|
||||
web.ctx.session.login_error = getMsg('CODE_NOT_EXISTS')
|
||||
return False
|
||||
|
||||
|
||||
def retJson(status, msg, data=()):
|
||||
return jsonify({'status': status, 'msg': msg, 'data': data})
|
||||
|
||||
@@ -139,13 +123,6 @@ def getLan(key):
|
||||
return msg
|
||||
|
||||
|
||||
def getJson(data):
|
||||
import json
|
||||
import web
|
||||
web.header('Content-Type', 'application/json; charset=utf-8')
|
||||
return json.dumps(data)
|
||||
|
||||
|
||||
def readFile(filename):
|
||||
# 读文件内容
|
||||
try:
|
||||
@@ -333,13 +310,13 @@ def GetLocalIp():
|
||||
ipaddress = re.search('\d+.\d+.\d+.\d+', ipaddress).group(0)
|
||||
return ipaddress
|
||||
except:
|
||||
try:
|
||||
url = web.ctx.session.home + '/Api/getIpAddress'
|
||||
opener = urllib2.urlopen(url)
|
||||
return opener.read()
|
||||
except:
|
||||
import web
|
||||
return web.ctx.host.split(':')[0]
|
||||
pass
|
||||
# try:
|
||||
# url = web.ctx.session.home + '/Api/getIpAddress'
|
||||
# opener = urllib2.urlopen(url)
|
||||
# return opener.read()
|
||||
# except:
|
||||
# return web.ctx.host.split(':')[0]
|
||||
|
||||
# 搜索数据中是否存在
|
||||
|
||||
@@ -355,7 +332,6 @@ def inArray(arrays, searchStr):
|
||||
|
||||
|
||||
def checkWebConfig():
|
||||
import web
|
||||
if get_webserver() == 'nginx':
|
||||
result = ExecShell(
|
||||
"ulimit -n 10240 && /www/server/nginx/sbin/nginx -t -c /www/server/nginx/conf/nginx.conf")
|
||||
@@ -787,15 +763,15 @@ def CheckCert(certPath='ssl/certificate.pem'):
|
||||
# 获取面板地址
|
||||
|
||||
|
||||
def getPanelAddr():
|
||||
import web
|
||||
protocol = 'https://' if os.path.exists("data/ssl.pl") else 'http://'
|
||||
h = web.ctx.host.split(':')
|
||||
try:
|
||||
result = protocol + h[0] + ':' + h[1]
|
||||
except:
|
||||
result = protocol + h[0] + ':' + readFile('data/port.pl').strip()
|
||||
return result
|
||||
# def getPanelAddr():
|
||||
# import web
|
||||
# protocol = 'https://' if os.path.exists("data/ssl.pl") else 'http://'
|
||||
# h = web.ctx.host.split(':')
|
||||
# try:
|
||||
# result = protocol + h[0] + ':' + h[1]
|
||||
# except:
|
||||
# result = protocol + h[0] + ':' + readFile('data/port.pl').strip()
|
||||
# return result
|
||||
|
||||
|
||||
# 字节单位转换
|
||||
|
||||
+505
-439
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,6 @@
|
||||
"pid": "1",
|
||||
"update": ["1.14.0", "1.12.2", "1.8.1", "1.15.3", "-Tengine2.2.2", "openresty"],
|
||||
"versions": [
|
||||
{"status": false, "version": "1.14", "run": false, "no": "", "task": "1"},
|
||||
{"status": false, "version": "1.14", "run": false, "no": "", "task": "1"},
|
||||
{"status": false, "version": "1.12", "run": false, "no": "", "task": "1"},
|
||||
{"status": false, "version": "1.8", "run": false, "no": "", "task": "1"},
|
||||
|
||||
Executable
+1609
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,7 @@ reload(sys)
|
||||
sys.setdefaultencoding('utf-8')
|
||||
import db
|
||||
import public
|
||||
import time
|
||||
|
||||
|
||||
global pre, timeoutCount, logPath, isTask, oldEdate, isCheck
|
||||
@@ -327,6 +328,7 @@ def systemTask():
|
||||
count += 1
|
||||
except Exception, ex:
|
||||
print str(ex)
|
||||
import time
|
||||
time.sleep(30)
|
||||
systemTask()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user