-
Notifications
You must be signed in to change notification settings - Fork 678
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
529 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<style> | ||
.overflow_hide { | ||
overflow: hidden; | ||
text-overflow: ellipsis; | ||
white-space: nowrap; | ||
vertical-align: middle; | ||
} | ||
</style> | ||
|
||
<div class="bt-form"> | ||
<div class='plugin_version'></div> | ||
<div class="bt-w-main"> | ||
<div class="bt-w-menu"> | ||
<p class="bgw" onclick="pluginService('alist');">服务</p> | ||
<p onclick="pluginInitD('alist');">自启动</p> | ||
<p onclick="pluginConfigTpl('alist',$('.plugin_version').attr('version'));">配置修改</p> | ||
<p onclick="pluginLogs('alist','','run_log');">运行日志</p> | ||
<p onclick="alistReadme();">相关说明</p> | ||
|
||
</div> | ||
<div class="bt-w-con pd15"> | ||
<div class="soft-man-con" style="height: 520px; overflow: auto;"></div> | ||
</div> | ||
</div> | ||
</div> | ||
<script type="text/javascript"> | ||
$.getScript( "/plugins/file?name=alist&f=js/alist.js", function(){ | ||
pluginService('alist', $('.plugin_version').attr('version')); | ||
}); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
# coding:utf-8 | ||
|
||
import sys | ||
import io | ||
import os | ||
import time | ||
import re | ||
|
||
sys.path.append(os.getcwd() + "/class/core") | ||
import mw | ||
|
||
app_debug = False | ||
if mw.isAppleSystem(): | ||
app_debug = True | ||
|
||
|
||
def getPluginName(): | ||
return 'alist' | ||
|
||
|
||
def getPluginDir(): | ||
return mw.getPluginDir() + '/' + getPluginName() | ||
|
||
|
||
def getServerDir(): | ||
return mw.getServerDir() + '/' + getPluginName() | ||
|
||
|
||
def getInitDFile(): | ||
current_os = mw.getOs() | ||
if current_os == 'darwin': | ||
return '/tmp/' + getPluginName() | ||
|
||
if current_os.startswith('freebsd'): | ||
return '/etc/rc.d/' + getPluginName() | ||
|
||
return '/etc/init.d/' + getPluginName() | ||
|
||
|
||
def getInitDTpl(): | ||
path = getPluginDir() + "/init.d/" + getPluginName() + ".tpl" | ||
return path | ||
|
||
|
||
def getArgs(): | ||
args = sys.argv[3:] | ||
tmp = {} | ||
args_len = len(args) | ||
|
||
if args_len == 1: | ||
t = args[0].strip('{').strip('}') | ||
if t.strip() == '': | ||
tmp = [] | ||
else: | ||
t = t.split(':') | ||
tmp[t[0]] = t[1] | ||
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, mw.returnJson(False, '参数:(' + ck[i] + ')没有!')) | ||
return (True, mw.returnJson(True, 'ok')) | ||
|
||
|
||
def getConf(): | ||
path = getServerDir() + "/data/config.json" | ||
return path | ||
|
||
def configTpl(): | ||
path = getPluginDir() + '/tpl' | ||
pathFile = os.listdir(path) | ||
tmp = [] | ||
for one in pathFile: | ||
file = path + '/' + one | ||
tmp.append(file) | ||
return mw.getJson(tmp) | ||
|
||
|
||
def readConfigTpl(): | ||
args = getArgs() | ||
data = checkArgs(args, ['file']) | ||
if not data[0]: | ||
return data[1] | ||
|
||
content = mw.readFile(args['file']) | ||
content = contentReplace(content) | ||
return mw.returnJson(True, 'ok', content) | ||
|
||
|
||
def status(): | ||
data = mw.execShell( | ||
"ps aux|grep alist |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") | ||
|
||
if data[0] == '': | ||
return 'stop' | ||
return 'start' | ||
|
||
def contentReplace(content): | ||
service_path = mw.getServerDir() | ||
content = content.replace('{$ROOT_PATH}', mw.getRootDir()) | ||
content = content.replace('{$SERVER_PATH}', service_path) | ||
content = content.replace('{$SERVER_APP}', service_path + '/'+getPluginName()) | ||
return content | ||
|
||
def initDreplace(): | ||
|
||
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 | ||
if not os.path.exists(file_bin): | ||
content = mw.readFile(file_tpl) | ||
content = content.replace('{$SERVER_PATH}', service_path) | ||
mw.writeFile(file_bin, content) | ||
mw.execShell('chmod +x ' + file_bin) | ||
|
||
# systemd | ||
systemDir = mw.systemdCfgDir() | ||
systemService = systemDir + '/' + getPluginName() + '.service' | ||
if os.path.exists(systemDir) and not os.path.exists(systemService): | ||
systemServiceTpl = getPluginDir() + '/init.d/' + getPluginName() + '.service.tpl' | ||
service_path = mw.getServerDir() | ||
se_content = mw.readFile(systemServiceTpl) | ||
se_content = se_content.replace('{$SERVER_PATH}', service_path) | ||
mw.writeFile(systemService, se_content) | ||
mw.execShell('systemctl daemon-reload') | ||
|
||
return file_bin | ||
|
||
|
||
def alistOp(method): | ||
file = initDreplace() | ||
|
||
current_os = mw.getOs() | ||
if current_os == "darwin": | ||
data = mw.execShell(file + ' ' + method) | ||
if data[1] == '': | ||
return 'ok' | ||
return data[1] | ||
|
||
if current_os.startswith("freebsd"): | ||
data = mw.execShell('service ' + getPluginName() + ' ' + method) | ||
if data[1] == '': | ||
return 'ok' | ||
return data[1] | ||
|
||
data = mw.execShell('systemctl ' + method + ' ' + getPluginName()) | ||
if data[1] == '': | ||
return 'ok' | ||
return data[1] | ||
|
||
|
||
def start(): | ||
return alistOp('start') | ||
|
||
|
||
def stop(): | ||
return alistOp('stop') | ||
|
||
|
||
def restart(): | ||
status = alistOp('restart') | ||
return status | ||
|
||
|
||
def reload(): | ||
return alistOp('reload') | ||
|
||
|
||
def initdStatus(): | ||
current_os = mw.getOs() | ||
if current_os == 'darwin': | ||
return "Apple Computer does not support" | ||
|
||
if current_os.startswith('freebsd'): | ||
initd_bin = getInitDFile() | ||
if os.path.exists(initd_bin): | ||
return 'ok' | ||
|
||
shell_cmd = 'systemctl status ' + \ | ||
getPluginName() + ' | grep loaded | grep "enabled;"' | ||
data = mw.execShell(shell_cmd) | ||
if data[0] == '': | ||
return 'fail' | ||
return 'ok' | ||
|
||
|
||
def initdInstall(): | ||
current_os = mw.getOs() | ||
if current_os == 'darwin': | ||
return "Apple Computer does not support" | ||
|
||
# freebsd initd install | ||
if current_os.startswith('freebsd'): | ||
import shutil | ||
source_bin = initDreplace() | ||
initd_bin = getInitDFile() | ||
shutil.copyfile(source_bin, initd_bin) | ||
mw.execShell('chmod +x ' + initd_bin) | ||
mw.execShell('sysrc ' + getPluginName() + '_enable="YES"') | ||
return 'ok' | ||
|
||
mw.execShell('systemctl enable ' + getPluginName()) | ||
return 'ok' | ||
|
||
|
||
def initdUinstall(): | ||
current_os = mw.getOs() | ||
if current_os == 'darwin': | ||
return "Apple Computer does not support" | ||
|
||
if current_os.startswith('freebsd'): | ||
initd_bin = getInitDFile() | ||
os.remove(initd_bin) | ||
mw.execShell('sysrc ' + getPluginName() + '_enable="NO"') | ||
return 'ok' | ||
|
||
mw.execShell('systemctl disable ' + getPluginName()) | ||
return 'ok' | ||
|
||
|
||
def runLog(): | ||
return getServerDir() + '/data/log/log.log' | ||
|
||
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 == 'conf': | ||
print(getConf()) | ||
elif func == 'run_log': | ||
print(runLog()) | ||
elif func == 'config_tpl': | ||
print(configTpl()) | ||
elif func == 'read_config_tpl': | ||
print(readConfigTpl()) | ||
else: | ||
print('error') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"sort": 7, | ||
"ps": "一个支持多种存储的文件列表程序", | ||
"name": "alist", | ||
"title": "Alist", | ||
"shell": "install.sh", | ||
"versions":["3.37.4"], | ||
"tip": "soft", | ||
"checks": "server/alist", | ||
"path": "server/alist", | ||
"display": 1, | ||
"author": "alist", | ||
"date": "2022-10-09", | ||
"home": "https://alist.nn.ci", | ||
"type": 0, | ||
"pid": "5" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
[Unit] | ||
Description=A file list program that supports multiple storage | ||
After=network.target | ||
|
||
[Service] | ||
Type=forking | ||
ExecStart={$SERVER_PATH}/alist/alist server | ||
ExecReload=/bin/kill -USR2 $MAINPID | ||
Restart=on-failure | ||
|
||
[Install] | ||
WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#!/bin/sh | ||
# chkconfig: 2345 55 25 | ||
# description: alist Service | ||
|
||
### BEGIN INIT INFO | ||
# Provides: alist | ||
# Required-Start: $all | ||
# Required-Stop: $all | ||
# Default-Start: 2 3 4 5 | ||
# Default-Stop: 0 1 6 | ||
# Short-Description: starts alist | ||
# Description: starts the MDW-Web | ||
### END INIT INFO | ||
|
||
# Simple alist init.d script conceived to work on Linux systems | ||
# as it does use of the /proc filesystem. | ||
|
||
app_start(){ | ||
echo "Starting alist server..." | ||
cd {$SERVER_PATH}/alist | ||
./alist server >> {$SERVER_PATH}/alist/logs.pl 2>&1 & | ||
} | ||
|
||
app_stop(){ | ||
echo "dztasks stopped" | ||
ps -ef| grep alist | grep -v grep | grep -v python | grep -v sh | awk '{print $2}'| xargs kill | ||
} | ||
|
||
|
||
case "$1" in | ||
start) | ||
app_start | ||
;; | ||
stop) | ||
app_stop | ||
;; | ||
restart|reload) | ||
app_stop | ||
sleep 0.3 | ||
app_start | ||
;; | ||
*) | ||
echo "Please use start or stop as first argument" | ||
;; | ||
esac | ||
|
Oops, something went wrong.