mirror of https://github.com/midoks/mdserver-web
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.1 KiB
77 lines
2.1 KiB
# coding:utf-8
|
|
|
|
# ---------------------------------------------------------------------------------
|
|
# MW-Linux面板
|
|
# ---------------------------------------------------------------------------------
|
|
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
|
# ---------------------------------------------------------------------------------
|
|
# Author: midoks <midoks@163.com>
|
|
# ---------------------------------------------------------------------------------
|
|
|
|
# ---------------------------------------------------------------------------------
|
|
# 核心方法库
|
|
# ---------------------------------------------------------------------------------
|
|
|
|
|
|
import os
|
|
import sys
|
|
import time
|
|
import string
|
|
import json
|
|
import hashlib
|
|
import shlex
|
|
import datetime
|
|
import subprocess
|
|
import glob
|
|
import base64
|
|
import re
|
|
|
|
from random import Random
|
|
|
|
def execShell(cmdstring, cwd=None, timeout=None, shell=True):
|
|
|
|
if shell:
|
|
cmdstring_list = cmdstring
|
|
else:
|
|
cmdstring_list = shlex.split(cmdstring)
|
|
if timeout:
|
|
end_time = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
|
|
|
|
sub = subprocess.Popen(cmdstring_list, cwd=cwd, stdin=subprocess.PIPE,
|
|
shell=shell, bufsize=4096, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
|
|
while sub.poll() is None:
|
|
time.sleep(0.1)
|
|
if timeout:
|
|
if end_time <= datetime.datetime.now():
|
|
raise Exception("Timeout:%s" % cmdstring)
|
|
|
|
if sys.version_info[0] == 2:
|
|
return sub.communicate()
|
|
|
|
data = sub.communicate()
|
|
# python3 fix 返回byte数据
|
|
if isinstance(data[0], bytes):
|
|
t1 = str(data[0], encoding='utf-8')
|
|
|
|
if isinstance(data[1], bytes):
|
|
t2 = str(data[1], encoding='utf-8')
|
|
return (t1, t2)
|
|
|
|
|
|
def getTracebackInfo():
|
|
import traceback
|
|
errorMsg = traceback.format_exc()
|
|
return errorMsg
|
|
|
|
def getRunDir():
|
|
return os.getcwd()
|
|
|
|
def dbSqitePrefix():
|
|
WIN = sys.platform.startswith('win')
|
|
if WIN: # 如果是 Windows 系统,使用三个斜线
|
|
prefix = 'sqlite:///'
|
|
else: # 否则使用四个斜线
|
|
prefix = 'sqlite:////'
|
|
return prefix
|
|
|
|
|