mirror of https://github.com/midoks/mdserver-web
parent
ddaede21c8
commit
cf78cf2da9
After Width: | Height: | Size: 3.7 KiB |
@ -0,0 +1,299 @@ |
||||
# coding: utf-8 |
||||
|
||||
import time |
||||
import random |
||||
import os |
||||
import json |
||||
import re |
||||
import sys |
||||
|
||||
sys.path.append(os.getcwd() + "/class/core") |
||||
import public |
||||
|
||||
|
||||
app_debug = False |
||||
if public.isAppleSystem(): |
||||
app_debug = True |
||||
|
||||
|
||||
def getPluginName(): |
||||
return 'simdht' |
||||
|
||||
|
||||
def getPluginDir(): |
||||
return public.getPluginDir() + '/' + getPluginName() |
||||
|
||||
sys.path.append(getPluginDir() + "/class") |
||||
import mysql |
||||
|
||||
|
||||
def getServerDir(): |
||||
return public.getServerDir() + '/' + getPluginName() |
||||
|
||||
|
||||
def getInitDFile(): |
||||
if app_debug: |
||||
return '/tmp/' + getPluginName() |
||||
return '/etc/init.d/' + getPluginName() |
||||
|
||||
|
||||
def getArgs(): |
||||
args = sys.argv[2:] |
||||
tmp = {} |
||||
args_len = len(args) |
||||
|
||||
if args_len == 1: |
||||
t = args[0].strip('{').strip('}') |
||||
t = t.split(':') |
||||
tmp[t[0]] = t[1] |
||||
elif args_len > 1: |
||||
for i in range(len(args)): |
||||
t = args[i].split(':') |
||||
tmp[t[0]] = t[1] |
||||
|
||||
return tmp |
||||
|
||||
|
||||
def checkArgs(data, ck=[]): |
||||
for i in range(len(ck)): |
||||
if not ck[i] in data: |
||||
return (False, public.returnJson(False, '参数:(' + ck[i] + ')没有!')) |
||||
return (True, public.returnJson(True, 'ok')) |
||||
|
||||
|
||||
def getInitDTpl(): |
||||
path = getPluginDir() + "/init.d/" + getPluginName() + ".tpl" |
||||
return path |
||||
|
||||
|
||||
def getSqlFile(): |
||||
file = getPluginDir() + "/conf/simdht.sql" |
||||
return file |
||||
|
||||
|
||||
def getDbConf(): |
||||
file = getServerDir() + "/db.cfg" |
||||
return file |
||||
|
||||
|
||||
def getRunLog(): |
||||
file = getServerDir() + "/logs.pl" |
||||
return file |
||||
|
||||
|
||||
def initDreplace(): |
||||
|
||||
ddir = getServerDir() + '/workers' |
||||
if not os.path.exists(ddir): |
||||
sdir = getPluginDir() + '/workers' |
||||
public.execShell('cp -rf ' + sdir + ' ' + getServerDir()) |
||||
|
||||
cfg = getServerDir() + '/db.cfg' |
||||
if not os.path.exists(cfg): |
||||
cfg_tpl = getPluginDir() + '/workers/db.cfg' |
||||
content = public.readFile(cfg_tpl) |
||||
public.writeFile(cfg, content) |
||||
|
||||
file_tpl = getInitDTpl() |
||||
service_path = os.path.dirname(os.getcwd()) |
||||
|
||||
initD_path = getServerDir() + '/init.d' |
||||
if not os.path.exists(initD_path): |
||||
os.mkdir(initD_path) |
||||
file_bin = initD_path + '/' + getPluginName() |
||||
|
||||
# initd replace |
||||
content = public.readFile(file_tpl) |
||||
content = content.replace('{$SERVER_PATH}', service_path) |
||||
public.writeFile(file_bin, content) |
||||
public.execShell('chmod +x ' + file_bin) |
||||
|
||||
return file_bin |
||||
|
||||
|
||||
def status(): |
||||
data = public.execShell( |
||||
"ps -ef|grep \"python simdht_worker.py\" | grep -v grep | awk '{print $2}'") |
||||
if data[0] == '': |
||||
return 'stop' |
||||
return 'start' |
||||
|
||||
|
||||
def start(): |
||||
file = initDreplace() |
||||
|
||||
data = public.execShell(file + ' start') |
||||
if data[1] == '': |
||||
return 'ok' |
||||
return data[1] |
||||
|
||||
|
||||
def stop(): |
||||
file = initDreplace() |
||||
data = public.execShell(file + ' stop') |
||||
if data[1] == '': |
||||
public.execShell('rm -rf /tmp/mysql.sock') |
||||
return 'ok' |
||||
return 'fail' |
||||
|
||||
|
||||
def restart(): |
||||
file = initDreplace() |
||||
data = public.execShell(file + ' restart') |
||||
if data[1] == '': |
||||
return 'ok' |
||||
return 'fail' |
||||
|
||||
|
||||
def reload(): |
||||
file = initDreplace() |
||||
data = public.execShell(file + ' reload') |
||||
if data[1] == '': |
||||
return 'ok' |
||||
return 'fail' |
||||
|
||||
|
||||
def initdStatus(): |
||||
if not app_debug: |
||||
if public.isAppleSystem(): |
||||
return "Apple Computer does not support" |
||||
|
||||
initd_bin = getInitDFile() |
||||
if os.path.exists(initd_bin): |
||||
return 'ok' |
||||
return 'fail' |
||||
|
||||
|
||||
def initdInstall(): |
||||
import shutil |
||||
if not app_debug: |
||||
if public.isAppleSystem(): |
||||
return "Apple Computer does not support" |
||||
|
||||
mysql_bin = initDreplace() |
||||
initd_bin = getInitDFile() |
||||
shutil.copyfile(mysql_bin, initd_bin) |
||||
public.execShell('chmod +x ' + initd_bin) |
||||
return 'ok' |
||||
|
||||
|
||||
def initdUinstall(): |
||||
if not app_debug: |
||||
if public.isAppleSystem(): |
||||
return "Apple Computer does not support" |
||||
initd_bin = getInitDFile() |
||||
os.remove(initd_bin) |
||||
return 'ok' |
||||
|
||||
|
||||
def matchData(reg, content): |
||||
tmp = re.search(reg, content).groups() |
||||
return tmp[0] |
||||
|
||||
|
||||
def getDbConfInfo(): |
||||
cfg = getDbConf() |
||||
content = public.readFile(cfg) |
||||
data = {} |
||||
data['DB_HOST'] = matchData("DB_HOST\s*=\s(.*)", content) |
||||
data['DB_USER'] = matchData("DB_USER\s*=\s(.*)", content) |
||||
data['DB_PORT'] = matchData("DB_PORT\s*=\s(.*)", content) |
||||
data['DB_PASS'] = matchData("DB_PASS\s*=\s(.*)", content) |
||||
data['DB_NAME'] = matchData("DB_NAME\s*=\s(.*)", content) |
||||
return data |
||||
|
||||
|
||||
def pMysqlDb(): |
||||
data = getDbConfInfo() |
||||
conn = mysql.mysql() |
||||
conn.setHost(data['DB_HOST']) |
||||
conn.setUser(data['DB_USER']) |
||||
conn.setPwd(data['DB_PASS']) |
||||
conn.setPort(int(data['DB_PORT'])) |
||||
conn.setDb(data['DB_NAME']) |
||||
return conn |
||||
|
||||
|
||||
def isSqlError(mysqlMsg): |
||||
# 检测数据库执行错误 |
||||
mysqlMsg = str(mysqlMsg) |
||||
if "MySQLdb" in mysqlMsg: |
||||
return public.returnJson(False, 'MySQLdb组件缺失! <br>进入SSH命令行输入: pip install mysql-python') |
||||
if "2002," in mysqlMsg: |
||||
return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!') |
||||
if "using password:" in mysqlMsg: |
||||
return public.returnJson(False, '数据库管理密码错误!') |
||||
if "Connection refused" in mysqlMsg: |
||||
return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!') |
||||
if "1133" in mysqlMsg: |
||||
return public.returnJson(False, '数据库用户不存在!') |
||||
if "1007" in mysqlMsg: |
||||
return public.returnJson(False, '数据库已经存在!') |
||||
return None |
||||
|
||||
|
||||
def getMinData(conn, sec): |
||||
time_diff = 0 |
||||
if public.isAppleSystem(): |
||||
time_diff = 3 * 60 |
||||
pre = time.strftime("%Y-%m-%d %H:%M:%S", |
||||
time.localtime(time.time() - sec - time_diff)) |
||||
sql = "select count(id) from search_hash where create_time > '" + pre + "'" |
||||
data = conn.query(sql) |
||||
return data[0][0] |
||||
|
||||
|
||||
def getTrendData(): |
||||
try: |
||||
args = getArgs() |
||||
data = checkArgs(args, ['interval']) |
||||
if not data[0]: |
||||
return data[1] |
||||
pdb = pMysqlDb() |
||||
# interval = int(args['interval']) |
||||
result = pdb.execute("show tables") |
||||
isError = isSqlError(result) |
||||
if isError: |
||||
return isError |
||||
one = getMinData(pdb, 1) |
||||
two = getMinData(pdb, 5) |
||||
three = getMinData(pdb, 10) |
||||
return public.getJson([one, two, three]) |
||||
except Exception as e: |
||||
print str(e) |
||||
return public.getJson([0, 0, 0]) |
||||
|
||||
def dhtCmd(): |
||||
file = initDreplace() |
||||
return file+' restart' |
||||
|
||||
if __name__ == "__main__": |
||||
func = sys.argv[1] |
||||
if func == 'status': |
||||
print status() |
||||
elif func == 'start': |
||||
print start() |
||||
elif func == 'stop': |
||||
print stop() |
||||
elif func == 'restart': |
||||
print restart() |
||||
elif func == 'reload': |
||||
print reload() |
||||
elif func == 'initd_status': |
||||
print initdStatus() |
||||
elif func == 'initd_install': |
||||
print initdInstall() |
||||
elif func == 'initd_uninstall': |
||||
print initdUinstall() |
||||
elif func == 'get_sql': |
||||
print getSqlFile() |
||||
elif func == 'get_db_conf': |
||||
print getDbConf() |
||||
elif func == 'get_run_Log': |
||||
print getRunLog() |
||||
elif func == 'get_trend_data': |
||||
print getTrendData() |
||||
elif func == 'dht_cmd': |
||||
print dhtCmd(); |
||||
else: |
||||
print 'error' |
@ -0,0 +1,17 @@ |
||||
{ |
||||
"sort": 7, |
||||
"ps": "一个新的轻量级BitTorrent客户端", |
||||
"name": "qbittorrent", |
||||
"title": "qBittorrent", |
||||
"shell": "install.sh", |
||||
"versions":["4.1.5"], |
||||
"updates":["4.1.5"], |
||||
"tip": "soft", |
||||
"checks": "server/qbittorrent", |
||||
"display": 1, |
||||
"author": "Zend", |
||||
"date": "2017-04-01", |
||||
"home": "https://www.qbittorrent.org", |
||||
"type": 0, |
||||
"pid": "5" |
||||
} |
@ -0,0 +1,67 @@ |
||||
#!/bin/bash |
||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin |
||||
export PATH |
||||
|
||||
curPath=`pwd` |
||||
rootPath=$(dirname "$curPath") |
||||
rootPath=$(dirname "$rootPath") |
||||
serverPath=$(dirname "$rootPath") |
||||
sysName=`uname` |
||||
|
||||
install_tmp=${rootPath}/tmp/bt_install.pl |
||||
|
||||
|
||||
Install_qbittorrent() |
||||
{ |
||||
if [ $sysName == 'Darwin' ]; then |
||||
else |
||||
yum -y install qt-devel boost-devel openssl-devel qt5-qtbase-devel qt5-linguist |
||||
fi |
||||
|
||||
echo '正在安装脚本文件...' > $install_tmp |
||||
mkdir -p $serverPath/qbittorrent |
||||
|
||||
QB_DIR=${serverPath}/source/qbittorrent |
||||
mkdir -p $QB_DIR |
||||
|
||||
if [ ! -f ${QB_DIR}/libtorrent-rasterbar-1.1.9.tar.gz ];then |
||||
wget -O ${QB_DIR}/libtorrent-rasterbar-1.1.9.tar.gz https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_1_9/libtorrent-rasterbar-1.1.9.tar.gz |
||||
fi |
||||
cd ${QB_DIR} tar -zxf libtorrent-rasterbar-1.1.9.tar.gz |
||||
cd ${QB_DIR} && cd libtorrent-rasterbar-1.1.9 |
||||
|
||||
#修改为固定端口号 |
||||
#sed -i "s/i2p ? 1 : tracker_req().listen_port/8999/" src/http_tracker_connection.cpp |
||||
./configure --prefix=$serverPath/lib/libtorrent CXXFLAGS=-std=c++11 |
||||
make && make install |
||||
#echo "$serverPath/lib/libtorrent/lib" > /etc/ld.so.conf.d/libtorrent-x86_64.conf |
||||
#ldconfig |
||||
#export LD_LIBRARY_PATH=/usr/local/libtorrent/lib/ |
||||
#export CPLUS_INCLUDE_PATH=/usr/local/libtorrent/include/ |
||||
#export PKG_CONFIG_PATH=/usr/local/libtorrent/lib/pkgconfig/ |
||||
|
||||
|
||||
if [ ! -f ${QB_DIR}/qbittorrent-4.1.5.tar.gz ];then |
||||
wget -O ${QB_DIR}/qbittorrent-4.1.5.tar.gz https://github.com/qbittorrent/qBittorrent/archive/release-4.1.5.tar.gz |
||||
fi |
||||
|
||||
cd ${QB_DIR} && tar -zxvf qbittorrent-4.1.5.tar.gz |
||||
|
||||
#cp -rf ${SPHINX_DIR}/sphinx-3.1.1/ $serverPath/sphinx/bin |
||||
|
||||
echo '4.1.5' > $serverPath/qbittorrent/version.pl |
||||
echo '安装完成' > $install_tmp |
||||
} |
||||
|
||||
Uninstall_qbittorrent() |
||||
{ |
||||
rm -rf $serverPath/qbittorrent |
||||
echo "Uninstall_qbittorrent" > $install_tmp |
||||
} |
||||
|
||||
action=$1 |
||||
if [ "${1}" == 'install' ];then |
||||
Install_qbittorrent |
||||
else |
||||
Uninstall_qbittorrent |
||||
fi |
Loading…
Reference in new issue