mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
Update index.py
This commit is contained in:
@@ -21,6 +21,7 @@ class classApi:
|
||||
__MW_PANEL = 'http://127.0.0.1:7200'
|
||||
|
||||
_REQUESTS = None
|
||||
_SPEED_FILE = None
|
||||
|
||||
# 如果希望多台面板,可以在实例化对象时,将面板地址与密钥传入
|
||||
def __init__(self, mw_panel=None, mw_key=None):
|
||||
@@ -32,6 +33,8 @@ class classApi:
|
||||
if not self._REQUESTS:
|
||||
self._REQUESTS = requests.session()
|
||||
|
||||
self._SPEED_FILE = getServerDir() + '/config/speed.json'
|
||||
|
||||
# 计算MD5
|
||||
def __get_md5(self, s):
|
||||
m = hashlib.md5()
|
||||
@@ -60,6 +63,29 @@ class classApi:
|
||||
return mw.returnJson(False, '连接超时!')
|
||||
return mw.returnJson(False, '连接服务器失败!')
|
||||
|
||||
def write_speed(self, key, value):
|
||||
# 写进度
|
||||
if os.path.exists(self._SPEED_FILE):
|
||||
speed_info = json.loads(mw.readFile(self._SPEED_FILE))
|
||||
else:
|
||||
speed_info = {"time": int(time.time()), "size": 0, "used": 0, "total_size": 0,
|
||||
"speed": 0, "action": "等待中", "done": "等待中", "end_time": int(time.time())}
|
||||
if not key in speed_info:
|
||||
speed_info[key] = 0
|
||||
if key == 'total_size':
|
||||
speed_info[key] += value
|
||||
else:
|
||||
speed_info[key] = value
|
||||
mw.writeFile(self._SPEED_FILE, json.dumps(speed_info))
|
||||
|
||||
# 设置文件权限
|
||||
def set_mode(self, filename, mode):
|
||||
if not os.path.exists(filename):
|
||||
return False
|
||||
mode = int(str(mode), 8)
|
||||
os.chmod(filename, mode)
|
||||
return True
|
||||
|
||||
def send(self, url, args, timeout=600):
|
||||
url = self.__MW_PANEL + '/api' + url
|
||||
post_data = self.__get_key_data() # 取签名
|
||||
@@ -70,7 +96,38 @@ class classApi:
|
||||
except Exception as e:
|
||||
return result
|
||||
|
||||
def send_file(self,):
|
||||
def get_mode_and_user(self, path):
|
||||
'''取文件或目录权限信息'''
|
||||
data = {}
|
||||
if not os.path.exists(path):
|
||||
return None
|
||||
stat = os.stat(path)
|
||||
data['mode'] = str(oct(stat.st_mode)[-3:])
|
||||
try:
|
||||
data['user'] = pwd.getpwuid(stat.st_uid).pw_name
|
||||
except:
|
||||
data['user'] = str(stat.st_uid)
|
||||
return data
|
||||
|
||||
def upload_file(self, sfile, dfile, chmod=None):
|
||||
# 上传文件
|
||||
if not os.path.exists(sfile):
|
||||
write_log("|-指定目录不存在{}".format(sfile))
|
||||
return False
|
||||
pdata = self.__get_key_data()
|
||||
pdata['f_name'] = os.path.basename(dfile)
|
||||
pdata['f_path'] = os.path.dirname(dfile)
|
||||
pdata['f_size'] = os.path.getsize(sfile)
|
||||
pdata['f_start'] = 0
|
||||
if chmod:
|
||||
mode_user = self.get_mode_and_user(os.path.dirname(sfile))
|
||||
pdata['dir_mode'] = mode_user['mode'] + ',' + mode_user['user']
|
||||
mode_user = self.get_mode_and_user(sfile)
|
||||
pdata['file_mode'] = mode_user['mode'] + ',' + mode_user['user']
|
||||
f = open(sfile, 'rb')
|
||||
return self.send_file(pdata, f)
|
||||
|
||||
def send_file(self, f):
|
||||
pass
|
||||
|
||||
def save(self):
|
||||
@@ -255,7 +312,8 @@ def stepOne():
|
||||
token = args['token']
|
||||
|
||||
api = classApi(url, token)
|
||||
# api = classApi('http://127.0.0.1:7200','HfJNKGP5RPqGvhIOyrwpXG4A2fTjSh9B')
|
||||
# api =
|
||||
# classApi('http://127.0.0.1:7200','HfJNKGP5RPqGvhIOyrwpXG4A2fTjSh9B')
|
||||
rdata = api.send('/task/count', {})
|
||||
if type(rdata) != int:
|
||||
return mw.returnJson(False, rdata['msg'])
|
||||
@@ -432,7 +490,7 @@ def getSpeed():
|
||||
speed_info['all_speed'] = sync_info['speed']
|
||||
speed_info['total_time'] = speed_info['end_time'] - speed_info['time']
|
||||
speed_info['total_time'] = str(int(speed_info[
|
||||
'total_time'] // 60)) + "分" + str(int(speed_info['total_time'] % 60)) + "秒"
|
||||
'total_time'] // 60)) + "分" + str(int(speed_info['total_time'] % 60)) + "秒"
|
||||
log_file = getServerDir() + '/migration_api/sync.log'
|
||||
speed_info['log'] = mw.execShell("tail -n 10 {}".format(log_file))[0]
|
||||
return mw.returnJson(True, 'ok', speed_info)
|
||||
|
||||
Reference in New Issue
Block a user