diff --git a/class/core/plugin.py b/class/core/plugin.py
index 11ce662c3..7c099db22 100755
--- a/class/core/plugin.py
+++ b/class/core/plugin.py
@@ -128,7 +128,7 @@ class plugin:
else:
if pg['pid'] == sType:
plugins_info.append(pg)
- except BaseException, e:
+ except Exception, e:
print e
args = {}
args['count'] = len(plugins_info)
diff --git a/class/core/public.py b/class/core/public.py
index a3fa6423a..21913b0ca 100755
--- a/class/core/public.py
+++ b/class/core/public.py
@@ -48,7 +48,7 @@ def getRootDir():
def getOs():
os = execShell('uname')
- return os[0]
+ return os[0].lower().strip()
def M(table):
@@ -92,7 +92,7 @@ def md5(str):
return False
-def GetFileMd5(filename):
+def getFileMd5(filename):
# 文件的MD5值
if not os.path.isfile(filename):
return False
@@ -108,7 +108,7 @@ def GetFileMd5(filename):
return myhash.hexdigest()
-def GetRandomString(length):
+def getRandomString(length):
# 取随机字符串
str = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
diff --git a/class/core/system.py b/class/core/system.py
deleted file mode 100755
index e23330620..000000000
--- a/class/core/system.py
+++ /dev/null
@@ -1,700 +0,0 @@
-# coding: utf-8
-
-import psutil
-import time
-import os
-import public
-import re
-
-
-class system:
- setupPath = None
- pids = None
-
- def __init__(self):
- self.setupPath = '/www/server'
-
- def GetConcifInfo(self, get=None):
- # 取环境配置信息
- if not hasattr(web.ctx.session, 'config'):
- web.ctx.session.config = public.M('config').where("id=?", ('1',)).field(
- 'webserver,sites_path,backup_path,status,mysql_root').find()
- if not hasattr(web.ctx.session.config, 'email'):
- web.ctx.session.config['email'] = public.M(
- 'users').where("id=?", ('1',)).getField('email')
- data = {}
- data = web.ctx.session.config
- data['webserver'] = web.ctx.session.config['webserver']
- # PHP版本
- phpVersions = ('52', '53', '54', '55', '56',
- '70', '71', '72', '73', '74')
-
- data['php'] = []
-
- for version in phpVersions:
- tmp = {}
- tmp['setup'] = os.path.exists(
- self.setupPath + '/php/' + version + '/bin/php')
- if tmp['setup']:
- phpConfig = self.GetPHPConfig(version)
- tmp['version'] = version
- tmp['max'] = phpConfig['max']
- tmp['maxTime'] = phpConfig['maxTime']
- tmp['pathinfo'] = phpConfig['pathinfo']
- tmp['status'] = os.path.exists(
- '/tmp/php-cgi-' + version + '.sock')
- data['php'].append(tmp)
-
- tmp = {}
- data['webserver'] = ''
- serviceName = 'nginx'
- tmp['setup'] = False
- phpversion = "54"
- phpport = '888'
- pstatus = False
- pauth = False
- if os.path.exists(self.setupPath + '/nginx'):
- data['webserver'] = 'nginx'
- serviceName = 'nginx'
- tmp['setup'] = os.path.exists(self.setupPath + '/nginx/sbin/nginx')
- configFile = self.setupPath + '/nginx/conf/nginx.conf'
- try:
- if os.path.exists(configFile):
- conf = public.readFile(configFile)
- rep = "listen\s+([0-9]+)\s*;"
- rtmp = re.search(rep, conf)
- if rtmp:
- phpport = rtmp.groups()[0]
-
- if conf.find('AUTH_START') != -1:
- pauth = True
- if conf.find(self.setupPath + '/stop') == -1:
- pstatus = True
- configFile = self.setupPath + '/nginx/conf/enable-php.conf'
- conf = public.readFile(configFile)
- rep = "php-cgi-([0-9]+)\.sock"
- rtmp = re.search(rep, conf)
- if rtmp:
- phpversion = rtmp.groups()[0]
- except:
- pass
-
- elif os.path.exists(self.setupPath + '/apache'):
- data['webserver'] = 'apache'
- serviceName = 'httpd'
- tmp['setup'] = os.path.exists(self.setupPath + '/apache/bin/httpd')
- configFile = self.setupPath + '/apache/conf/extra/httpd-vhosts.conf'
- try:
- if os.path.exists(configFile):
- conf = public.readFile(configFile)
- rep = "php-cgi-([0-9]+)\.sock"
- rtmp = re.search(rep, conf)
- if rtmp:
- phpversion = rtmp.groups()[0]
- rep = "Listen\s+([0-9]+)\s*\n"
- rtmp = re.search(rep, conf)
- if rtmp:
- phpport = rtmp.groups()[0]
- if conf.find('AUTH_START') != -1:
- pauth = True
- if conf.find(self.setupPath + '/stop') == -1:
- pstatus = True
- except:
- pass
-
- tmp['type'] = data['webserver']
- tmp['version'] = public.readFile(
- self.setupPath + '/' + data['webserver'] + '/version.pl')
- tmp['status'] = False
- result = public.ExecShell('/etc/init.d/' + serviceName + ' status')
- if result[0].find('running') != -1:
- tmp['status'] = True
- data['web'] = tmp
-
- tmp = {}
- vfile = self.setupPath + '/phpmyadmin/version.pl'
- tmp['version'] = public.readFile(vfile)
- tmp['setup'] = os.path.exists(vfile)
- tmp['status'] = pstatus
- tmp['phpversion'] = phpversion
- tmp['port'] = phpport
- tmp['auth'] = pauth
- data['phpmyadmin'] = tmp
-
- tmp = {}
- tmp['setup'] = os.path.exists('/etc/init.d/tomcat')
- tmp['status'] = False
- if tmp['setup']:
- if os.path.exists('/www/server/tomcat/logs/catalina-daemon.pid'):
- tmp['status'] = self.getPid('jsvc')
- if not tmp['status']:
- tmp['status'] = self.getPid('java')
- tmp['version'] = public.readFile(self.setupPath + '/tomcat/version.pl')
- data['tomcat'] = tmp
-
- tmp = {}
- tmp['setup'] = os.path.exists(self.setupPath + '/mysql/bin/mysql')
- tmp['version'] = public.readFile(self.setupPath + '/mysql/version.pl')
- tmp['status'] = os.path.exists('/tmp/mysql.sock')
- data['mysql'] = tmp
-
- tmp = {}
- tmp['setup'] = os.path.exists(self.setupPath + '/redis/runtest')
- tmp['status'] = os.path.exists('/var/run/redis_6379.pid')
- data['redis'] = tmp
-
- tmp = {}
- tmp['setup'] = os.path.exists('/usr/local/memcached/bin/memcached')
- tmp['status'] = os.path.exists('/var/run/memcached.pid')
- data['memcached'] = tmp
-
- tmp = {}
- tmp['setup'] = os.path.exists(
- self.setupPath + '/pure-ftpd/bin/pure-pw')
- tmp['version'] = public.readFile(
- self.setupPath + '/pure-ftpd/version.pl')
- tmp['status'] = os.path.exists('/var/run/pure-ftpd.pid')
- data['pure-ftpd'] = tmp
- data['panel'] = self.GetPanelInfo()
- data['systemdate'] = public.ExecShell(
- 'date +"%Y-%m-%d %H:%M:%S %Z %z"')[0].strip()
-
- return data
-
- # 名取PID
- def getPid(self, pname):
- try:
- if not self.pids:
- self.pids = psutil.pids()
- for pid in self.pids:
- if psutil.Process(pid).name() == pname:
- return True
- return False
- except:
- return False
-
- # 检测指定进程是否存活
- def checkProcess(self, pid):
- try:
- if not self.pids:
- self.pids = psutil.pids()
- if int(pid) in self.pids:
- return True
- return False
- except:
- return False
-
- def GetPanelInfo(self, get=None):
- # 取面板配置
- address = public.GetLocalIp()
- try:
- try:
- port = web.ctx.host.split(':')[1]
- except:
- port = public.readFile('data/port.pl')
- except:
- port = '8888'
- domain = ''
- if os.path.exists('data/domain.conf'):
- domain = public.readFile('data/domain.conf')
-
- autoUpdate = ''
- if os.path.exists('data/autoUpdate.pl'):
- autoUpdate = 'checked'
- limitip = ''
- if os.path.exists('data/limitip.conf'):
- limitip = public.readFile('data/limitip.conf')
-
- templates = []
- for template in os.listdir('templates/'):
- if os.path.isdir('templates/' + template):
- templates.append(template)
- template = public.readFile('data/templates.pl')
-
- check502 = ''
- if os.path.exists('data/502Task.pl'):
- check502 = 'checked'
- return {'port': port, 'address': address, 'domain': domain, 'auto': autoUpdate, '502': check502, 'limitip': limitip, 'templates': templates, 'template': template}
-
- def GetPHPConfig(self, version):
- # 取PHP配置
- file = self.setupPath + "/php/" + version + "/etc/php.ini"
- phpini = public.readFile(file)
- file = self.setupPath + "/php/" + version + "/etc/php-fpm.conf"
- phpfpm = public.readFile(file)
- data = {}
- try:
- rep = "upload_max_filesize\s*=\s*([0-9]+)M"
- tmp = re.search(rep, phpini).groups()
- data['max'] = tmp[0]
- except:
- data['max'] = '50'
- try:
- rep = "request_terminate_timeout\s*=\s*([0-9]+)\n"
- tmp = re.search(rep, phpfpm).groups()
- data['maxTime'] = tmp[0]
- except:
- data['maxTime'] = 0
-
- try:
- rep = ur"\n;*\s*cgi\.fix_pathinfo\s*=\s*([0-9]+)\s*\n"
- tmp = re.search(rep, phpini).groups()
-
- if tmp[0] == '1':
- data['pathinfo'] = True
- else:
- data['pathinfo'] = False
- except:
- data['pathinfo'] = False
-
- return data
-
- def GetSystemTotal(self, get, interval=1):
- # 取系统统计信息
- data = self.GetMemInfo()
- cpu = self.GetCpuInfo(interval)
- data['cpuNum'] = cpu[1]
- data['cpuRealUsed'] = cpu[0]
- data['time'] = self.GetBootTime()
- data['system'] = self.GetSystemVersion()
- data['isuser'] = public.M('users').where(
- 'username=?', ('admin',)).count()
- data['version'] = web.ctx.session.version
- return data
-
- def GetLoadAverage(self, get):
- c = os.getloadavg()
- data = {}
- data['one'] = float(c[0])
- data['five'] = float(c[1])
- data['fifteen'] = float(c[2])
- data['max'] = psutil.cpu_count() * 2
- data['limit'] = data['max']
- data['safe'] = data['max'] * 0.75
- return data
-
- def GetAllInfo(self, get):
- data = {}
- data['load_average'] = self.GetLoadAverage(get)
- data['title'] = self.GetTitle()
- data['network'] = self.GetNetWorkApi(get)
- data['panel_status'] = not os.path.exists(
- '/www/server/panel/data/close.pl')
- import firewalls
- ssh_info = firewalls.firewalls().GetSshInfo(None)
- data['enable_ssh_status'] = ssh_info['status']
- data['disable_ping_status'] = not ssh_info['ping']
- data['time'] = self.GetBootTime()
- #data['system'] = self.GetSystemVersion();
- #data['mem'] = self.GetMemInfo();
- data['version'] = web.ctx.session.version
- return data
-
- def GetTitle(self):
- titlePl = 'data/title.pl'
- title = '宝塔Linux面板'
- if os.path.exists(titlePl):
- title = public.readFile(titlePl).strip()
- return title
-
- def GetSystemVersion(self):
- # 取操作系统版本
- import public
- version = public.readFile('/etc/redhat-release')
- if not version:
- version = public.readFile(
- '/etc/issue').strip().split("\n")[0].replace('\\n', '').replace('\l', '').strip()
- else:
- version = version.replace('release ', '').strip()
- return version
-
- def GetBootTime(self):
- # 取系统启动时间
- import public
- import math
- conf = public.readFile('/proc/uptime').split()
- tStr = float(conf[0])
- min = tStr / 60
- hours = min / 60
- days = math.floor(hours / 24)
- hours = math.floor(hours - (days * 24))
- min = math.floor(min - (days * 60 * 24) - (hours * 60))
- return public.getMsg('SYS_BOOT_TIME', (str(int(days)), str(int(hours)), str(int(min))))
-
- def GetCpuInfo(self, interval=1):
- # 取CPU信息
- cpuCount = psutil.cpu_count()
- used = psutil.cpu_percent(interval=interval)
- return used, cpuCount
-
- def GetMemInfo(self, get=None):
- # 取内存信息
- mem = psutil.virtual_memory()
- memInfo = {'memTotal': mem.total / 1024 / 1024, 'memFree': mem.free / 1024 / 1024,
- 'memBuffers': mem.buffers / 1024 / 1024, 'memCached': mem.cached / 1024 / 1024}
- memInfo['memRealUsed'] = memInfo['memTotal'] - \
- memInfo['memFree'] - memInfo['memBuffers'] - memInfo['memCached']
- return memInfo
-
- def GetDiskInfo(self, get=None):
- return self.GetDiskInfo2()
- # 取磁盘分区信息
- diskIo = psutil.disk_partitions()
- diskInfo = []
-
- for disk in diskIo:
- if disk[1] == '/mnt/cdrom':
- continue
- if disk[1] == '/boot':
- continue
- tmp = {}
- tmp['path'] = disk[1]
- tmp['size'] = psutil.disk_usage(disk[1])
- diskInfo.append(tmp)
- return diskInfo
-
- def GetDiskInfo2(self):
- # 取磁盘分区信息
- temp = public.ExecShell("df -h -P|grep '/'|grep -v tmpfs")[0]
- tempInodes = public.ExecShell("df -i -P|grep '/'|grep -v tmpfs")[0]
- temp1 = temp.split('\n')
- tempInodes1 = tempInodes.split('\n')
- diskInfo = []
- n = 0
- cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
- '/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
- for tmp in temp1:
- n += 1
- inodes = tempInodes1[n - 1].split()
- disk = tmp.split()
- if len(disk) < 5:
- continue
- if disk[1].find('M') != -1:
- continue
- if disk[1].find('K') != -1:
- continue
- if len(disk[5].split('/')) > 4:
- continue
- if disk[5] in cuts:
- continue
- arr = {}
- arr['path'] = disk[5]
- tmp1 = [disk[1], disk[2], disk[3], disk[4]]
- arr['size'] = tmp1
- arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
- if disk[5] == '/':
- bootLog = '/tmp/panelBoot.pl'
- if disk[2].find('M') != -1:
- if os.path.exists(bootLog):
- os.system('rm -f ' + bootLog)
- else:
- if not os.path.exists(bootLog):
- os.system('sleep 1 && /etc/init.d/bt reload &')
- diskInfo.append(arr)
- return diskInfo
-
- # 清理系统垃圾
- def ClearSystem(self, get):
- count = total = 0
- tmp_total, tmp_count = self.ClearMail()
- count += tmp_count
- total += tmp_total
- tmp_total, tmp_count = self.ClearOther()
- count += tmp_count
- total += tmp_total
- return count, total
-
- # 清理邮件日志
- def ClearMail(self):
- rpath = '/var/spool'
- total = count = 0
- import shutil
- con = ['cron', 'anacron', 'mail']
- for d in os.listdir(rpath):
- if d in con:
- continue
- dpath = rpath + '/' + d
- time.sleep(0.2)
- num = size = 0
- for n in os.listdir(dpath):
- filename = dpath + '/' + n
- fsize = os.path.getsize(filename)
- size += fsize
- if os.path.isdir(filename):
- shutil.rmtree(filename)
- else:
- os.remove(filename)
- print '\t\033[1;32m[OK]\033[0m'
- num += 1
- total += size
- count += num
- return total, count
-
- # 清理其它
- def ClearOther(self):
- clearPath = [
- {'path': '/www/server/panel', 'find': 'testDisk_'},
- {'path': '/www/wwwlogs', 'find': 'log'},
- {'path': '/tmp', 'find': 'panelBoot.pl'},
- {'path': '/www/server/panel/install', 'find': '.rpm'}
- ]
-
- total = count = 0
- for c in clearPath:
- for d in os.listdir(c['path']):
- if d.find(c['find']) == -1:
- continue
- filename = c['path'] + '/' + d
- fsize = os.path.getsize(filename)
- total += fsize
- if os.path.isdir(filename):
- shutil.rmtree(filename)
- else:
- os.remove(filename)
- count += 1
- public.serviceReload()
- os.system('echo > /tmp/panelBoot.pl')
- return total, count
-
- def GetNetWork(self, get=None):
- # return self.GetNetWorkApi(get);
- # 取网络流量信息
- try:
- networkIo = psutil.net_io_counters()[:4]
- if not hasattr(web.ctx.session, 'otime'):
- web.ctx.session.up = networkIo[0]
- web.ctx.session.down = networkIo[1]
- web.ctx.session.otime = time.time()
-
- ntime = time.time()
- networkInfo = {}
- networkInfo['upTotal'] = networkIo[0]
- networkInfo['downTotal'] = networkIo[1]
- networkInfo['up'] = round(float(
- networkIo[0] - web.ctx.session.up) / 1024 / (ntime - web.ctx.session.otime), 2)
- networkInfo['down'] = round(float(
- networkIo[1] - web.ctx.session.down) / 1024 / (ntime - web.ctx.session.otime), 2)
- networkInfo['downPackets'] = networkIo[3]
- networkInfo['upPackets'] = networkIo[2]
-
- web.ctx.session.up = networkIo[0]
- web.ctx.session.down = networkIo[1]
- web.ctx.session.otime = ntime
-
- networkInfo['cpu'] = self.GetCpuInfo()
- networkInfo['load'] = self.GetLoadAverage(get)
- return networkInfo
- except:
- return None
-
- def GetNetWorkApi(self, get=None):
- # 取网络流量信息
- try:
- tmpfile = 'data/network.temp'
- networkIo = psutil.net_io_counters()[:4]
-
- if not os.path.exists(tmpfile):
- public.writeFile(tmpfile, str(
- networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
-
- lastValue = public.readFile(tmpfile).split('|')
-
- ntime = time.time()
- networkInfo = {}
- networkInfo['upTotal'] = networkIo[0]
- networkInfo['downTotal'] = networkIo[1]
- networkInfo['up'] = round(
- float(networkIo[0] - int(lastValue[0])) / 1024 / (ntime - int(lastValue[2])), 2)
- networkInfo['down'] = round(
- float(networkIo[1] - int(lastValue[1])) / 1024 / (ntime - int(lastValue[2])), 2)
- networkInfo['downPackets'] = networkIo[3]
- networkInfo['upPackets'] = networkIo[2]
-
- public.writeFile(tmpfile, str(
- networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
-
- #networkInfo['cpu'] = self.GetCpuInfo(0.1)
- return networkInfo
- except:
- return None
-
- def GetNetWorkOld(self):
- # 取网络流量信息
- import time
- pnet = public.readFile('/proc/net/dev')
- rep = '([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)'
- pnetall = re.findall(rep, pnet)
- networkInfo = {}
- networkInfo['upTotal'] = networkInfo['downTotal'] = networkInfo['up'] = networkInfo[
- 'down'] = networkInfo['downPackets'] = networkInfo['upPackets'] = 0
- for pnetInfo in pnetall:
- if pnetInfo[0] == 'io':
- continue
- networkInfo['downTotal'] += int(pnetInfo[1])
- networkInfo['downPackets'] += int(pnetInfo[2])
- networkInfo['upTotal'] += int(pnetInfo[9])
- networkInfo['upPackets'] += int(pnetInfo[10])
-
- if not hasattr(web.ctx.session, 'otime'):
- web.ctx.session.up = networkInfo['upTotal']
- web.ctx.session.down = networkInfo['downTotal']
- web.ctx.session.otime = time.time()
- ntime = time.time()
- tmpDown = networkInfo['downTotal'] - web.ctx.session.down
- tmpUp = networkInfo['upTotal'] - web.ctx.session.up
- networkInfo['down'] = str(
- round(float(tmpDown) / 1024 / (ntime - web.ctx.session.otime), 2))
- networkInfo['up'] = str(
- round(float(tmpUp) / 1024 / (ntime - web.ctx.session.otime), 2))
- if networkInfo['down'] < 0:
- networkInfo['down'] = 0
- if networkInfo['up'] < 0:
- networkInfo['up'] = 0
-
- web.ctx.session.up = networkInfo['upTotal']
- web.ctx.session.down = networkInfo['downTotal']
- web.ctx.session.otime = ntime
- networkInfo['cpu'] = self.GetCpuInfo()
- return networkInfo
-
- def ServiceAdmin(self, get=None):
- # 服务管理
-
- if get.name == 'mysqld':
- public.CheckMyCnf()
-
- if get.name == 'phpmyadmin':
- import ajax
- get.status = 'True'
- ajax.ajax().setPHPMyAdmin(get)
- return public.returnMsg(True, 'SYS_EXEC_SUCCESS')
-
- # 检查httpd配置文件
- if get.name == 'apache' or get.name == 'httpd':
- get.name = 'httpd'
- if not os.path.exists(self.setupPath + '/apache/bin/apachectl'):
- return public.returnMsg(True, 'SYS_NOT_INSTALL_APACHE')
- vhostPath = self.setupPath + '/panel/vhost/apache'
- if not os.path.exists(vhostPath):
- public.ExecShell('mkdir ' + vhostPath)
- public.ExecShell('/etc/init.d/httpd start')
-
- if get.type == 'start':
- public.ExecShell('/etc/init.d/httpd stop')
- public.ExecShell('pkill -9 httpd')
-
- result = public.ExecShell(
- 'ulimit -n 10240 && ' + self.setupPath + '/apache/bin/apachectl -t')
- if result[1].find('Syntax OK') == -1:
- public.WriteLog("TYPE_SOFT", 'SYS_EXEC_ERR', (str(result),))
- return public.returnMsg(False, 'SYS_CONF_APACHE_ERR', (result[1].replace("\n", '
'),))
-
- if get.type == 'restart':
- public.ExecShell('pkill -9 httpd')
- public.ExecShell('/etc/init.d/httpd start')
-
- # 检查nginx配置文件
- elif get.name == 'nginx':
- vhostPath = self.setupPath + '/panel/vhost/rewrite'
- if not os.path.exists(vhostPath):
- public.ExecShell('mkdir ' + vhostPath)
- vhostPath = self.setupPath + '/panel/vhost/nginx'
- if not os.path.exists(vhostPath):
- public.ExecShell('mkdir ' + vhostPath)
- public.ExecShell('/etc/init.d/nginx start')
-
- result = public.ExecShell(
- 'ulimit -n 10240 && nginx -t -c ' + self.setupPath + '/nginx/conf/nginx.conf')
- if result[1].find('perserver') != -1:
- limit = self.setupPath + '/nginx/conf/nginx.conf'
- nginxConf = public.readFile(limit)
- limitConf = "limit_conn_zone $binary_remote_addr zone=perip:10m;\n\t\tlimit_conn_zone $server_name zone=perserver:10m;"
- nginxConf = nginxConf.replace(
- "#limit_conn_zone $binary_remote_addr zone=perip:10m;", limitConf)
- public.writeFile(limit, nginxConf)
- public.ExecShell('/etc/init.d/nginx start')
- return public.returnMsg(True, 'SYS_CONF_NGINX_REP')
-
- if result[1].find('proxy') != -1:
- import panelSite
- panelSite.panelSite().CheckProxy(get)
- public.ExecShell('/etc/init.d/nginx start')
- return public.returnMsg(True, 'SYS_CONF_NGINX_REP')
-
- # return result
- if result[1].find('successful') == -1:
- public.WriteLog("TYPE_SOFT", 'SYS_EXEC_ERR', (str(result),))
- return public.returnMsg(False, 'SYS_CONF_NGINX_ERR', (result[1].replace("\n", '
'),))
-
- # 执行
- execStr = "/etc/init.d/" + get.name + " " + get.type
- if execStr == '/etc/init.d/pure-ftpd reload':
- execStr = self.setupPath + '/pure-ftpd/bin/pure-pw mkdb ' + \
- self.setupPath + '/pure-ftpd/etc/pureftpd.pdb'
- if execStr == '/etc/init.d/pure-ftpd start':
- os.system('pkill -9 pure-ftpd')
- if execStr == '/etc/init.d/tomcat reload':
- execStr = '/etc/init.d/tomcat stop && /etc/init.d/tomcat start'
- if execStr == '/etc/init.d/tomcat restart':
- execStr = '/etc/init.d/tomcat stop && /etc/init.d/tomcat start'
-
- if get.name != 'mysqld':
- result = public.ExecShell(execStr)
- else:
- os.system(execStr)
- result = []
- result.append('')
- result.append('')
-
- if result[1].find('nginx.pid') != -1:
- public.ExecShell('pkill -9 nginx && sleep 1')
- public.ExecShell('/etc/init.d/nginx start')
- if get.type != 'test':
- public.WriteLog("TYPE_SOFT", 'SYS_EXEC_SUCCESS', (execStr,))
-
- if len(result[1]) > 1 and get.name != 'pure-ftpd':
- return public.returnMsg(False, '
警告消息:
' + result[1].replace('\n', ' ' + rdata.updateMsg + ' ' + rdata[i].body + ' *以上记录来源于本服务器日志,查看命令:cat /var/log/secure
'))
- return public.returnMsg(True, 'SYS_EXEC_SUCCESS')
-
- def RestartServer(self, get):
- if not public.IsRestart():
- return public.returnMsg(False, 'EXEC_ERR_TASK')
- public.ExecShell("sync && /etc/init.d/bt stop && init 6 &")
- return public.returnMsg(True, 'SYS_REBOOT')
-
- # 释放内存
- def ReMemory(self, get):
- os.system('sync')
- scriptFile = 'script/rememory.sh'
- if not os.path.exists(scriptFile):
- public.downloadFile(web.ctx.session.home +
- '/script/rememory.sh', scriptFile)
- public.ExecShell("/bin/bash " + self.setupPath +
- '/panel/' + scriptFile)
- return self.GetMemInfo()
-
- # 重启面板
- def ReWeb(self, get):
- # if not public.IsRestart(): return
- # public.returnMsg(False,'EXEC_ERR_TASK');
- public.ExecShell('/etc/init.d/bt restart &')
- return True
-
- # 修复面板
- def RepPanel(self, get):
- vp = ''
- if public.readFile('/www/server/panel/class/common.py').find('checkSafe') != -1:
- vp = '_pro'
- public.ExecShell("wget -O update.sh " + public.get_url() +
- "/install/update" + vp + ".sh && bash update.sh")
- if hasattr(web.ctx.session, 'getCloudPlugin'):
- del(web.ctx.session['getCloudPlugin'])
- return True
-
- # 升级到专业版
- def UpdatePro(self, get):
- public.ExecShell("wget -O update.sh " + public.get_url() +
- "/install/update_pro.sh && bash update.sh pro")
- if hasattr(web.ctx.session, 'getCloudPlugin'):
- del(web.ctx.session['getCloudPlugin'])
- return True
diff --git a/class/core/system_api.py b/class/core/system_api.py
new file mode 100755
index 000000000..adccf22ac
--- /dev/null
+++ b/class/core/system_api.py
@@ -0,0 +1,408 @@
+# coding: utf-8
+
+import psutil
+import time
+import os
+import re
+import math
+
+
+import public
+from flask import Flask, session
+
+
+class system_api:
+ setupPath = None
+ pids = None
+
+ def __init__(self):
+ self.setupPath = '/www/server'
+
+ # 名取PID
+ def getPid(self, pname):
+ try:
+ if not self.pids:
+ self.pids = psutil.pids()
+ for pid in self.pids:
+ if psutil.Process(pid).name() == pname:
+ return True
+ return False
+ except:
+ return False
+
+ # 检测指定进程是否存活
+ def checkProcess(self, pid):
+ try:
+ if not self.pids:
+ self.pids = psutil.pids()
+ if int(pid) in self.pids:
+ return True
+ return False
+ except:
+ return False
+
+ def getPanelInfo(self, get=None):
+ # 取面板配置
+ address = public.GetLocalIp()
+ try:
+ try:
+ port = web.ctx.host.split(':')[1]
+ except:
+ port = public.readFile('data/port.pl')
+ except:
+ port = '8888'
+ domain = ''
+ if os.path.exists('data/domain.conf'):
+ domain = public.readFile('data/domain.conf')
+
+ autoUpdate = ''
+ if os.path.exists('data/autoUpdate.pl'):
+ autoUpdate = 'checked'
+ limitip = ''
+ if os.path.exists('data/limitip.conf'):
+ limitip = public.readFile('data/limitip.conf')
+
+ templates = []
+ for template in os.listdir('templates/'):
+ if os.path.isdir('templates/' + template):
+ templates.append(template)
+ template = public.readFile('data/templates.pl')
+
+ check502 = ''
+ if os.path.exists('data/502Task.pl'):
+ check502 = 'checked'
+ return {'port': port, 'address': address, 'domain': domain, 'auto': autoUpdate, '502': check502, 'limitip': limitip, 'templates': templates, 'template': template}
+
+ def getSystemTotal(self, interval=1):
+ # 取系统统计信息
+ data = self.getMemInfo()
+ cpu = self.getCpuInfo(interval)
+ data['cpuNum'] = cpu[1]
+ data['cpuRealUsed'] = cpu[0]
+ data['time'] = self.getBootTime()
+ data['system'] = self.getSystemVersion()
+ data['isuser'] = public.M('users').where(
+ 'username=?', ('admin',)).count()
+ data['version'] = '0.0.1'
+ return data
+
+ def getLoadAverage(self, get=None):
+ c = os.getloadavg()
+ data = {}
+ data['one'] = float(c[0])
+ data['five'] = float(c[1])
+ data['fifteen'] = float(c[2])
+ data['max'] = psutil.cpu_count() * 2
+ data['limit'] = data['max']
+ data['safe'] = data['max'] * 0.75
+ return data
+
+ def getAllInfo(self, get):
+ data = {}
+ data['load_average'] = self.GetLoadAverage(get)
+ data['title'] = self.GetTitle()
+ data['network'] = self.GetNetWorkApi(get)
+ data['panel_status'] = not os.path.exists(
+ '/www/server/panel/data/close.pl')
+ import firewalls
+ ssh_info = firewalls.firewalls().GetSshInfo(None)
+ data['enable_ssh_status'] = ssh_info['status']
+ data['disable_ping_status'] = not ssh_info['ping']
+ data['time'] = self.GetBootTime()
+ # data['system'] = self.GetSystemVersion();
+ # data['mem'] = self.GetMemInfo();
+ data['version'] = web.ctx.session.version
+ return data
+
+ def getTitle(self):
+ titlePl = 'data/title.pl'
+ title = '宝塔Linux面板'
+ if os.path.exists(titlePl):
+ title = public.readFile(titlePl).strip()
+ return title
+
+ def getSystemVersion(self):
+ # 取操作系统版本
+ os = public.getOs()
+ if os == 'darwin':
+ return os
+
+ version = public.readFile('/etc/redhat-release')
+ if not version:
+ version = public.readFile(
+ '/etc/issue').strip().split("\n")[0].replace('\\n', '').replace('\l', '').strip()
+ else:
+ version = version.replace('release ', '').strip()
+ return version
+
+ def getBootTime(self):
+ # 取系统启动时间
+ start_time = psutil.boot_time()
+ run_time = time.time() - start_time
+ # conf = public.readFile('/proc/uptime').split()
+ tStr = float(run_time)
+ min = tStr / 60
+ hours = min / 60
+ days = math.floor(hours / 24)
+ hours = math.floor(hours - (days * 24))
+ min = math.floor(min - (days * 60 * 24) - (hours * 60))
+ return public.getMsg('SYS_BOOT_TIME', (str(int(days)), str(int(hours)), str(int(min))))
+
+ def getCpuInfo(self, interval=1):
+ # 取CPU信息
+ cpuCount = psutil.cpu_count()
+ used = psutil.cpu_percent(interval=interval)
+ return used, cpuCount
+
+ def getMemInfo(self, get=None):
+ # 取内存信息
+ mem = psutil.virtual_memory()
+ if public.getOs() == 'darwin':
+ memInfo = {
+ 'memTotal': mem.total / 1024 / 1024
+ }
+ memInfo['memRealUsed'] = memInfo['memTotal'] * (mem.percent / 100)
+ else:
+ memInfo = {
+ 'memTotal': mem.total / 1024 / 1024,
+ 'memFree': mem.free / 1024 / 1024,
+ 'memBuffers': mem.buffers / 1024 / 1024,
+ 'memCached': mem.cached / 1024 / 1024
+ }
+
+ memInfo['memRealUsed'] = memInfo['memTotal'] - \
+ memInfo['memFree'] - memInfo['memBuffers'] - \
+ memInfo['memCached']
+ return memInfo
+
+ def getDiskInfo(self, get=None):
+ return self.getDiskInfo2()
+ # 取磁盘分区信息
+ diskIo = psutil.disk_partitions()
+ diskInfo = []
+
+ for disk in diskIo:
+ if disk[1] == '/mnt/cdrom':
+ continue
+ if disk[1] == '/boot':
+ continue
+ tmp = {}
+ tmp['path'] = disk[1]
+ tmp['size'] = psutil.disk_usage(disk[1])
+ diskInfo.append(tmp)
+ return diskInfo
+
+ def getDiskInfo2(self):
+ # 取磁盘分区信息
+ temp = public.execShell(
+ "df -h -P|grep '/'|grep -v tmpfs | grep -v devfs")[0]
+ tempInodes = public.execShell(
+ "df -i -P|grep '/'|grep -v tmpfs | grep -v devfs")[0]
+ temp1 = temp.split('\n')
+ tempInodes1 = tempInodes.split('\n')
+ diskInfo = []
+ n = 0
+ cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
+ '/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
+ for tmp in temp1:
+ n += 1
+ inodes = tempInodes1[n - 1].split()
+ disk = tmp.split()
+ if len(disk) < 5:
+ continue
+ if disk[1].find('M') != -1:
+ continue
+ if disk[1].find('K') != -1:
+ continue
+ if len(disk[5].split('/')) > 4:
+ continue
+ if disk[5] in cuts:
+ continue
+ arr = {}
+ arr['path'] = disk[5]
+ tmp1 = [disk[1], disk[2], disk[3], disk[4]]
+ arr['size'] = tmp1
+ arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
+ if disk[5] == '/':
+ bootLog = os.getcwd() + '/tmp/panelBoot.pl'
+ if disk[2].find('M') != -1:
+ if os.path.exists(bootLog):
+ os.system('rm -f ' + bootLog)
+ else:
+ if not os.path.exists(bootLog):
+ pass
+ if inodes[2] != '0':
+ diskInfo.append(arr)
+ return diskInfo
+
+ # 清理系统垃圾
+ def clearSystem(self, get):
+ count = total = 0
+ tmp_total, tmp_count = self.ClearMail()
+ count += tmp_count
+ total += tmp_total
+ tmp_total, tmp_count = self.ClearOther()
+ count += tmp_count
+ total += tmp_total
+ return count, total
+
+ # 清理邮件日志
+ def clearMail(self):
+ rpath = '/var/spool'
+ total = count = 0
+ import shutil
+ con = ['cron', 'anacron', 'mail']
+ for d in os.listdir(rpath):
+ if d in con:
+ continue
+ dpath = rpath + '/' + d
+ time.sleep(0.2)
+ num = size = 0
+ for n in os.listdir(dpath):
+ filename = dpath + '/' + n
+ fsize = os.path.getsize(filename)
+ size += fsize
+ if os.path.isdir(filename):
+ shutil.rmtree(filename)
+ else:
+ os.remove(filename)
+ print '\t\033[1;32m[OK]\033[0m'
+ num += 1
+ total += size
+ count += num
+ return total, count
+
+ # 清理其它
+ def clearOther(self):
+ clearPath = [
+ {'path': '/www/server/panel', 'find': 'testDisk_'},
+ {'path': '/www/wwwlogs', 'find': 'log'},
+ {'path': '/tmp', 'find': 'panelBoot.pl'},
+ {'path': '/www/server/panel/install', 'find': '.rpm'}
+ ]
+
+ total = count = 0
+ for c in clearPath:
+ for d in os.listdir(c['path']):
+ if d.find(c['find']) == -1:
+ continue
+ filename = c['path'] + '/' + d
+ fsize = os.path.getsize(filename)
+ total += fsize
+ if os.path.isdir(filename):
+ shutil.rmtree(filename)
+ else:
+ os.remove(filename)
+ count += 1
+ public.serviceReload()
+ os.system('echo > /tmp/panelBoot.pl')
+ return total, count
+
+ def getNetWork(self, get=None):
+ # return self.GetNetWorkApi(get);
+ # 取网络流量信息
+ try:
+ # 取网络流量信息
+ networkIo = psutil.net_io_counters()[:4]
+ if not "otime" in session:
+ session['up'] = networkIo[0]
+ session['down'] = networkIo[1]
+ session['otime'] = time.time()
+
+ ntime = time.time()
+ networkInfo = {}
+ networkInfo['upTotal'] = networkIo[0]
+ networkInfo['downTotal'] = networkIo[1]
+ networkInfo['up'] = round(float(
+ networkIo[0] - session['up']) / 1024 / (ntime - session['otime']), 2)
+ networkInfo['down'] = round(
+ float(networkIo[1] - session['down']) / 1024 / (ntime - session['otime']), 2)
+ networkInfo['downPackets'] = networkIo[3]
+ networkInfo['upPackets'] = networkIo[2]
+
+ # print networkIo[1], session['down'], ntime, session['otime']
+ session['up'] = networkIo[0]
+ session['down'] = networkIo[1]
+ session['otime'] = time.time()
+
+ networkInfo['cpu'] = self.getCpuInfo()
+ networkInfo['load'] = self.getLoadAverage(get)
+ networkInfo['mem'] = self.getMemInfo(get)
+
+ return networkInfo
+ except Exception, e:
+ return None
+
+ def getNetWorkApi(self, get=None):
+ # 取网络流量信息
+ try:
+ tmpfile = 'data/network.temp'
+ networkIo = psutil.net_io_counters()[:4]
+
+ if not os.path.exists(tmpfile):
+ public.writeFile(tmpfile, str(
+ networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
+
+ lastValue = public.readFile(tmpfile).split('|')
+
+ ntime = time.time()
+ networkInfo = {}
+ networkInfo['upTotal'] = networkIo[0]
+ networkInfo['downTotal'] = networkIo[1]
+ networkInfo['up'] = round(
+ float(networkIo[0] - int(lastValue[0])) / 1024 / (ntime - int(lastValue[2])), 2)
+ networkInfo['down'] = round(
+ float(networkIo[1] - int(lastValue[1])) / 1024 / (ntime - int(lastValue[2])), 2)
+ networkInfo['downPackets'] = networkIo[3]
+ networkInfo['upPackets'] = networkIo[2]
+
+ public.writeFile(tmpfile, str(
+ networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time())))
+
+ # networkInfo['cpu'] = self.GetCpuInfo(0.1)
+ return networkInfo
+ except:
+ return None
+
+ def restartServer(self, get):
+ if not public.IsRestart():
+ return public.returnMsg(False, 'EXEC_ERR_TASK')
+ public.ExecShell("sync && /etc/init.d/bt stop && init 6 &")
+ return public.returnMsg(True, 'SYS_REBOOT')
+
+ # 释放内存
+ def reMemory(self, get):
+ os.system('sync')
+ scriptFile = 'script/rememory.sh'
+ if not os.path.exists(scriptFile):
+ public.downloadFile(web.ctx.session.home +
+ '/script/rememory.sh', scriptFile)
+ public.ExecShell("/bin/bash " + self.setupPath +
+ '/panel/' + scriptFile)
+ return self.GetMemInfo()
+
+ # 重启面板
+ def reWeb(self, get):
+ # if not public.IsRestart(): return
+ # public.returnMsg(False,'EXEC_ERR_TASK');
+ public.ExecShell('/etc/init.d/bt restart &')
+ return True
+
+ # 修复面板
+ def repPanel(self, get):
+ vp = ''
+ if public.readFile('/www/server/panel/class/common.py').find('checkSafe') != -1:
+ vp = '_pro'
+ public.ExecShell("wget -O update.sh " + public.get_url() +
+ "/install/update" + vp + ".sh && bash update.sh")
+ if hasattr(web.ctx.session, 'getCloudPlugin'):
+ del(web.ctx.session['getCloudPlugin'])
+ return True
+
+ # 升级到专业版
+ def updatePro(self, get):
+ public.ExecShell("wget -O update.sh " + public.get_url() +
+ "/install/update_pro.sh && bash update.sh pro")
+ if hasattr(web.ctx.session, 'getCloudPlugin'):
+ del(web.ctx.session['getCloudPlugin'])
+ return True
diff --git a/plugins/openresty/install.sh b/plugins/openresty/install.sh
index 1c61e5994..50ee7d0b2 100755
--- a/plugins/openresty/install.sh
+++ b/plugins/openresty/install.sh
@@ -15,11 +15,11 @@ Install_openresty()
mkdir -p $serverPath/tmp
echo '正在安装脚本文件...' > $install_tmp
- wget -O $serverPath/tmp/openresty.tar.gz https://openresty.org/download/openresty-1.13.6.2.tar.gz
- cd $serverPath/tmp && tar -zxvf openresty.tar.gz
+ #wget -O $serverPath/tmp/openresty.tar.gz https://openresty.org/download/openresty-1.13.6.2.tar.gz
+ #cd $serverPath/tmp && tar -zxvf openresty.tar.gz
mkdir -p $serverPath/openresty
- cd openresty* && ./configure --prefix=$serverPath/openresty && make && make install
+ cd $serverPath/tmp/openresty* && ./configure --prefix=$serverPath/openresty && make && make install
echo '安装完成' > $install_tmp
#rm -rf $serverPath/tmp
diff --git a/route/system.py b/route/system.py
index 66ad07605..101bfbe86 100644
--- a/route/system.py
+++ b/route/system.py
@@ -9,140 +9,17 @@ from flask import Flask, session
from flask import Blueprint, render_template
from flask import jsonify
-sys.path.append("class/")
+sys.path.append("class/core")
import public
-
+import system_api
system = Blueprint('system', __name__, template_folder='templates')
-def GetCpuInfo(interval=1):
- # 取CPU信息
- cpuCount = psutil.cpu_count()
- used = psutil.cpu_percent(interval=interval)
- return used, cpuCount
-
-
-def GetLoadAverage():
- c = os.getloadavg()
- data = {}
- data['one'] = float(c[0])
- data['five'] = float(c[1])
- data['fifteen'] = float(c[2])
- data['max'] = psutil.cpu_count() * 2
- data['limit'] = data['max']
- data['safe'] = data['max'] * 0.75
- return data
-
-
-def GetMemInfo():
- # 取内存信息
- mem = psutil.virtual_memory()
- memInfo = {'memTotal': mem.total / 1024 / 1024,
- 'memFree': mem.free / 1024 / 1024,
- # 'memBuffers': mem.buffers / 1024 / 1024,
- # 'memCached': mem.cached / 1024 / 1024
- }
-
- memInfo['memRealUsed'] = memInfo['memTotal'] - \
- memInfo['memFree']
- #- memInfo['memBuffers'] - memInfo['memCached']
- return memInfo
-
-
-def GetBootTime():
- conf = public.readFile('/proc/uptime').split()
- tStr = float(conf[0])
- min = tStr / 60
- hours = min / 60
- days = math.floor(hours / 24)
- hours = math.floor(hours - (days * 24))
- min = math.floor(min - (days * 60 * 24) - (hours * 60))
- return public.getMsg('SYS_BOOT_TIME', (str(int(days)), str(int(hours)), str(int(min))))
-
-
-def GetSystemVersion():
- # 取操作系统版本
- version = public.readFile('/etc/redhat-release')
- if not version:
- version = public.readFile(
- '/etc/issue').strip().split("\n")[0].replace('\\n', '').replace('\l', '').strip()
- else:
- version = version.replace('release ', '').strip()
- return version
-
-
@system.route("/network")
def network():
- # 取网络流量信息
- networkIo = psutil.net_io_counters()[:4]
- if not hasattr(session, 'otime'):
- session['up'] = networkIo[0]
- session['down'] = networkIo[1]
- session['otime'] = time.time()
-
- ntime = time.time()
- networkInfo = {}
- networkInfo['upTotal'] = networkIo[0]
- networkInfo['downTotal'] = networkIo[1]
- networkInfo['up'] = round(float(
- networkIo[0] - session['up']) / 1024 / (ntime - session['otime']), 2)
- networkInfo['down'] = round(
- float(networkIo[1] - session['down']) / 1024 / (ntime - session['otime']), 2)
- networkInfo['downPackets'] = networkIo[3]
- networkInfo['upPackets'] = networkIo[2]
-
- session['up'] = networkIo[0]
- session['down'] = networkIo[1]
- session['otime'] = time.time()
-
- networkInfo['cpu'] = GetCpuInfo()
- networkInfo['load'] = GetLoadAverage()
- return jsonify(networkInfo)
-
-
-@system.route("/diskinfo")
-def diskinfo():
- # 取磁盘分区信息
- temp = public.ExecShell("df -h -P|grep '/'|grep -v tmpfs")[0]
- tempInodes = public.ExecShell("df -i -P|grep '/'|grep -v tmpfs")[0]
- temp1 = temp.split('\n')
- tempInodes1 = tempInodes.split('\n')
- diskInfo = []
- n = 0
- cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
- '/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
- for tmp in temp1:
- n += 1
- inodes = tempInodes1[n - 1].split()
- disk = tmp.split()
- if len(disk) < 5:
- continue
- if disk[1].find('M') != -1:
- continue
- if disk[1].find('K') != -1:
- continue
- if len(disk[5].split('/')) > 4:
- continue
- if disk[5] in cuts:
- continue
- arr = {}
- arr['path'] = disk[5]
- tmp1 = [disk[1], disk[2], disk[3], disk[4]]
- arr['size'] = tmp1
- arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
- if disk[5] == '/':
- bootLog = '/tmp/panelBoot.pl'
- if disk[2].find('M') != -1:
- if os.path.exists(bootLog):
- os.system('rm -f ' + bootLog)
- else:
- pass
- if not os.path.exists(bootLog):
- os.system('sleep 1 &')
- # print arr
- diskInfo.append(arr)
- return jsonify(diskInfo)
+ data = system_api.system_api().getNetWork()
+ return public.getJson(data)
@system.route("/update_panel")
@@ -152,55 +29,11 @@ def updatePanel():
@system.route("/system_total")
def systemTotal():
- # 取系统统计信息
- data = GetMemInfo()
- cpu = GetCpuInfo(1)
- data['cpuNum'] = cpu[1]
- data['cpuRealUsed'] = cpu[0]
- # data['time'] = GetBootTime()
- # data['system'] = GetSystemVersion()
- data['isuser'] = public.M('users').where('username=?', ('admin',)).count()
- data['version'] = '0.0.1'
- return jsonify(data)
+ data = system_api.system_api().getSystemTotal()
+ return public.getJson(data)
@system.route("/disk_info")
def diskInfo():
- # 取磁盘分区信息
- temp = public.execShell("df -h -P|grep '/'|grep -v tmpfs")[0]
- tempInodes = public.execShell("df -i -P|grep '/'|grep -v tmpfs")[0]
- temp1 = temp.split('\n')
- tempInodes1 = tempInodes.split('\n')
- diskInfo = []
- n = 0
- cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
- '/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
- for tmp in temp1:
- n += 1
- inodes = tempInodes1[n - 1].split()
- disk = tmp.split()
- if len(disk) < 5:
- continue
- if disk[1].find('M') != -1:
- continue
- if disk[1].find('K') != -1:
- continue
- if len(disk[5].split('/')) > 4:
- continue
- if disk[5] in cuts:
- continue
- arr = {}
- arr['path'] = disk[5]
- tmp1 = [disk[1], disk[2], disk[3], disk[4]]
- arr['size'] = tmp1
- arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
- if disk[5] == '/':
- bootLog = os.getcwd() + '/tmp/panelBoot.pl'
- if disk[2].find('M') != -1:
- if os.path.exists(bootLog):
- os.system('rm -f ' + bootLog)
- else:
- if not os.path.exists(bootLog):
- pass
- diskInfo.append(arr)
+ diskInfo = system_api.system_api().getDiskInfo()
return public.getJson(diskInfo)
diff --git a/scripts/lib.sh b/scripts/lib.sh
new file mode 100755
index 000000000..140a7cfb1
--- /dev/null
+++ b/scripts/lib.sh
@@ -0,0 +1,244 @@
+#!/bin/bash
+PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
+export PATH
+public_file=/www/server/panel/install/public.sh
+if [ ! -f $public_file ];then
+ wget -O $public_file http://download.bt.cn/install/public.sh -T 5;
+fi
+. $public_file
+download_Url=$NODE_URL
+mkdir -p /www/server
+run_path="/root"
+Is_64bit=`getconf LONG_BIT`
+
+centos_version=`cat /etc/redhat-release | grep ' 7.' | grep -i centos`
+if [ "${centos_version}" != '' ]; then
+ rpm_path="centos7"
+else
+ rpm_path="centos6"
+fi
+
+Install_SendMail()
+{
+ yum install postfix mysql-libs -y
+ if [ "${centos_version}" != '' ];then
+ systemctl start postfix
+ systemctl enable postfix
+ else
+ service postfix start
+ chkconfig --level 2345 postfix on
+ fi
+}
+
+Install_Curl()
+{
+ if [ -f "/usr/local/curl/newcurl.pl" ];then
+ return;
+ fi
+ cd ${run_path}
+ curl_version="7.54.1"
+ if [ ! -f "curl-$curl_version.tar.gz" ];then
+ wget -O curl-$curl_version.tar.gz ${download_Url}/src/curl-$curl_version.tar.gz -T 5
+ fi
+ tar zxf curl-$curl_version.tar.gz
+ cd curl-$curl_version
+ ./configure --prefix=/usr/local/curl --enable-ares --without-nss --with-ssl=/usr/local/openssl
+ make && make install
+ cd ..
+ rm -rf curl-$curl_version
+ rm -rf curl-$curl_version.tar.gz
+ echo -e "Install_Curl" >> /www/server/lib.pl
+ echo -e "Ture" >> /usr/local/curl/newcurl.pl
+}
+
+Install_Libiconv()
+{
+ if [ -d '/usr/local/libiconv' ];then
+ return
+ fi
+ cd ${run_path}
+ if [ ! -f "libiconv-1.14.tar.gz" ];then
+ wget -O libiconv-1.14.tar.gz ${download_Url}/src/libiconv-1.14.tar.gz -T 5
+ fi
+ mkdir /patch
+ wget -O /patch/libiconv-glibc-2.16.patch ${download_Url}/src/patch/libiconv-glibc-2.16.patch -T 5
+ tar zxf libiconv-1.14.tar.gz
+ cd libiconv-1.14
+ patch -p0 < /patch/libiconv-glibc-2.16.patch
+ ./configure --prefix=/usr/local/libiconv --enable-static
+ make && make install
+ cd ${run_path}
+ rm -rf libiconv-1.14
+ rm -f libiconv-1.14.tar.gz
+ echo -e "Install_Libiconv" >> /www/server/lib.pl
+}
+
+Install_Libmcrypt()
+{
+ if [ -f '/usr/local/lib/libmcrypt.so' ];then
+ return;
+ fi
+ cd ${run_path}
+ if [ ! -f "libmcrypt-2.5.8.tar.gz" ];then
+ wget -O libmcrypt-2.5.8.tar.gz ${download_Url}/src/libmcrypt-2.5.8.tar.gz -T 5
+ fi
+ tar zxf libmcrypt-2.5.8.tar.gz
+ cd libmcrypt-2.5.8
+
+ ./configure
+ make && make install
+ /sbin/ldconfig
+ cd libltdl/
+ ./configure --enable-ltdl-install
+ make && make install
+ ln -sf /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
+ ln -sf /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
+ ln -sf /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
+ ln -sf /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
+ ldconfig
+ cd ${run_path}
+ rm -rf libmcrypt-2.5.8
+ rm -f libmcrypt-2.5.8.tar.gz
+ echo -e "Install_Libmcrypt" >> /www/server/lib.pl
+}
+
+Install_Mcrypt()
+{
+ if [ -f '/usr/bin/mcrypt' ] || [ -f '/usr/local/bin/mcrypt' ];then
+ return;
+ fi
+ cd ${run_path}
+ if [ ! -f "mcrypt-2.6.8.tar.gz" ];then
+ wget -O mcrypt-2.6.8.tar.gz ${download_Url}/src/mcrypt-2.6.8.tar.gz -T 5
+ fi
+ tar zxf mcrypt-2.6.8.tar.gz
+ cd mcrypt-2.6.8
+ ./configure
+ make && make install
+ cd ${run_path}
+ rm -rf mcrypt-2.6.8
+ rm -f mcrypt-2.6.8.tar.gz
+ echo -e "Install_Mcrypt" >> /www/server/lib.pl
+}
+
+Install_Mhash()
+{
+ if [ -f '/usr/local/lib/libmhash.so' ];then
+ return;
+ fi
+ cd ${run_path}
+ if [ ! -f "mhash-0.9.9.9.tar.gz" ];then
+ wget -O mhash-0.9.9.9.tar.gz ${download_Url}/src/mhash-0.9.9.9.tar.gz -T 5
+ fi
+ tar zxf mhash-0.9.9.9.tar.gz
+ cd mhash-0.9.9.9
+ ./configure
+ make && make install
+ ln -sf /usr/local/lib/libmhash.a /usr/lib/libmhash.a
+ ln -sf /usr/local/lib/libmhash.la /usr/lib/libmhash.la
+ ln -sf /usr/local/lib/libmhash.so /usr/lib/libmhash.so
+ ln -sf /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
+ ln -sf /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
+ ldconfig
+ cd ${run_path}
+ rm -rf mhash-0.9.9.9*
+ echo -e "Install_Mhash" >> /www/server/lib.pl
+}
+
+
+Install_Freetype()
+{
+ if [ -d /usr/local/freetype ];then
+ return;
+ fi
+ cd ${run_path}
+ if [ ! -f "freetype-2.4.12.tar.gz" ];then
+ wget -O freetype-2.4.12.tar.gz ${download_Url}/src/freetype-2.4.12.tar.gz -T 5
+ fi
+ tar zxf freetype-2.4.12.tar.gz
+ cd freetype-2.4.12
+ ./configure --prefix=/usr/local/freetype
+ make && make install
+
+ cat > /etc/ld.so.conf.d/freetype.conf<' + rdata[i].title + '
\
- " +
- " "
- }
-
- if (rflush) {
- $("#networkList").html(tbody);
- return;
- }
-
- layer.open({
- type: 1,
- area: ['650px', '600px'],
- title: lan.index.net_status_title,
- closeBtn: 2,
- shift: 5,
- shadeClose: true,
- content: "" + rdata[i].type + " " +
- "" + rdata[i].laddr[0] + ":" + rdata[i].laddr[1] + " " +
- "" + (rdata[i].raddr.length > 1 ? "" + rdata[i].raddr[0] + ":" + rdata[i].raddr[1] : 'NONE') + " " +
- "" + rdata[i].status + " " +
- "" + rdata[i].process + " " +
- "" + rdata[i].pid + " " +
- "\
- \
-
\
- \
- \
- " + tbody + "\
- " + lan.index.net_protocol + " \
- " + lan.index.net_address_dst + " \
- " + lan.index.net_address_src + " \
- " + lan.index.net_address_status + " \
- " + lan.index.net_process + " \
- " + lan.index.net_process_pid + " \
- " +
- " ";
- }
-
- if (rflush) {
- $("#processList").html(tbody);
- return;
- }
-
- layer.open({
- type: 1,
- area: ['70%', '600px'],
- title: lan.index.process_title,
- closeBtn: 2,
- shift: 5,
- shadeClose: true,
- content: "" + rdata[i].pid + " " +
- "" + rdata[i].name + " " +
- "" + rdata[i].cpu_percent + "% " +
- "" + rdata[i].memory_percent + "% " +
- "" + ToSize(rdata[i].io_read_bytes) + '/' + ToSize(rdata[i].io_write_bytes) + " " +
- "" + rdata[i].status + " " +
- "" + rdata[i].threads + " " +
- "" + rdata[i].user + " " +
- "" + lan.index.process_kill + " " +
- "\
- \
-
\
- \
- \
- " + tbody + "\
- " + lan.index.process_pid + " \
- " + lan.index.process_name + " \
- " + lan.index.process_cpu + " \
- " + lan.index.process_mem + " \
- " + lan.index.process_disk + " \
- " + lan.index.process_status + " \
- " + lan.index.process_thread + " \
- " + lan.index.process_user + " \
- " + lan.index.process_act + " \
- ' + body + '源IP地址 用户 时间 获取中:
+ 获取中...
CPU使用率
@@ -49,7 +49,7 @@
$data['lan']['S2']
+ 获取中...
内存使用率
@@ -61,10 +61,10 @@
$data['lan']['S2']
+ 获取中...