From 98bc816b21ac938e21c15a6236036004ebe454bf Mon Sep 17 00:00:00 2001 From: midoks Date: Tue, 13 Sep 2022 21:02:55 +0800 Subject: [PATCH] up --- plugins/mail/ico.png | Bin 0 -> 4184 bytes plugins/mail/index.html | 54 ++++++ plugins/mail/index.py | 241 +++++++++++++++++++++++++ plugins/mail/info.json | 18 ++ plugins/mail/install.sh | 25 +++ plugins/mail/versions/1.0/install.sh | 77 ++++++++ plugins/php/versions/common/gettext.sh | 113 ++++++++++++ plugins/php/versions/phplib.conf | 22 +++ 8 files changed, 550 insertions(+) create mode 100755 plugins/mail/ico.png create mode 100755 plugins/mail/index.html create mode 100755 plugins/mail/index.py create mode 100755 plugins/mail/info.json create mode 100755 plugins/mail/install.sh create mode 100755 plugins/mail/versions/1.0/install.sh create mode 100755 plugins/php/versions/common/gettext.sh diff --git a/plugins/mail/ico.png b/plugins/mail/ico.png new file mode 100755 index 0000000000000000000000000000000000000000..fd5d7fad16f9db45782ca31657cd58e52f0a7286 GIT binary patch literal 4184 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 X3+b8nanE?^zkf_*ym4>D?1eu9Gr#88 literal 0 HcmV?d00001 diff --git a/plugins/mail/index.html b/plugins/mail/index.html new file mode 100755 index 000000000..dfa65bf45 --- /dev/null +++ b/plugins/mail/index.html @@ -0,0 +1,54 @@ +
+
+
+

服务

+

自启动

+

配置修改

+

负载状态

+

日志

+
+
+
+
+
+
+ \ No newline at end of file diff --git a/plugins/mail/index.py b/plugins/mail/index.py new file mode 100755 index 000000000..37ffe8ffc --- /dev/null +++ b/plugins/mail/index.py @@ -0,0 +1,241 @@ +# coding:utf-8 + +import sys +import io +import os +import time + +sys.path.append(os.getcwd() + "/class/core") +import mw + +app_debug = False +if mw.isAppleSystem(): + app_debug = True + + +def getPluginName(): + return 'mail' + + +def getPluginDir(): + return mw.getPluginDir() + '/' + getPluginName() + + +def getServerDir(): + return mw.getServerDir() + '/' + getPluginName() + + +def getInitDFile(): + if app_debug: + return '/tmp/' + getPluginName() + return '/etc/init.d/' + getPluginName() + + +def getConf(): + path = getServerDir() + "/redis.conf" + return path + + +def getConfTpl(): + path = getPluginDir() + "/config/redis.conf" + return path + + +def getInitDTpl(): + path = getPluginDir() + "/init.d/" + getPluginName() + ".tpl" + return path + + +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 status(): + data = mw.execShell( + "ps -ef|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") + + if data[0] == '': + return 'stop' + return 'start' + + +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) + + # log + dataLog = getServerDir() + '/data' + if not os.path.exists(dataLog): + mw.execShell('chmod +x ' + file_bin) + + # config replace + dst_conf = getServerDir() + '/redis.conf' + dst_conf_init = getServerDir() + '/init.pl' + if not os.path.exists(dst_conf_init): + conf_content = mw.readFile(getConfTpl()) + conf_content = conf_content.replace('{$SERVER_PATH}', service_path) + mw.writeFile(dst_conf, conf_content) + mw.writeFile(dst_conf_init, 'ok') + + # systemd + systemDir = mw.systemdCfgDir() + systemService = systemDir + '/redis.service' + systemServiceTpl = getPluginDir() + '/init.d/redis.service.tpl' + if os.path.exists(systemDir) and not os.path.exists(systemService): + 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 redisOp(method): + file = initDreplace() + + if not mw.isAppleSystem(): + data = mw.execShell('systemctl ' + method + ' redis') + if data[1] == '': + return 'ok' + return 'fail' + + data = mw.execShell(file + ' start') + if data[1] == '': + return 'ok' + return 'fail' + + +def start(): + return redisOp('start') + + +def stop(): + return redisOp('stop') + + +def restart(): + status = redisOp('restart') + + log_file = runLog() + mw.execShell("echo '' > " + log_file) + return status + + +def reload(): + return redisOp('reload') + + +def runInfo(): + cmd = getServerDir() + "/bin/redis-cli info" + data = mw.execShell(cmd)[0] + res = [ + 'tcp_port', + 'uptime_in_days', # 已运行天数 + 'connected_clients', # 连接的客户端数量 + 'used_memory', # Redis已分配的内存总量 + 'used_memory_rss', # Redis占用的系统内存总量 + 'used_memory_peak', # Redis所用内存的高峰值 + 'mem_fragmentation_ratio', # 内存碎片比率 + 'total_connections_received', # 运行以来连接过的客户端的总数量 + 'total_commands_processed', # 运行以来执行过的命令的总数量 + 'instantaneous_ops_per_sec', # 服务器每秒钟执行的命令数量 + 'keyspace_hits', # 查找数据库键成功的次数 + 'keyspace_misses', # 查找数据库键失败的次数 + 'latest_fork_usec' # 最近一次 fork() 操作耗费的毫秒数 + ] + data = data.split("\n") + result = {} + for d in data: + if len(d) < 3: + continue + t = d.strip().split(':') + if not t[0] in res: + continue + result[t[0]] = t[1] + return mw.getJson(result) + + +def initdStatus(): + if mw.isAppleSystem(): + return "Apple Computer does not support" + + shell_cmd = 'systemctl status redis | grep loaded | grep "enabled;"' + data = mw.execShell(shell_cmd) + if data[0] == '': + return 'fail' + return 'ok' + + +def initdInstall(): + if mw.isAppleSystem(): + return "Apple Computer does not support" + + mw.execShell('systemctl enable redis') + return 'ok' + + +def initdUinstall(): + + if mw.isAppleSystem(): + return "Apple Computer does not support" + + mw.execShell('systemctl disable redis') + return 'ok' + + +def runLog(): + return getServerDir() + '/data/redis.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 == 'run_info': + print(runInfo()) + elif func == 'conf': + print(getConf()) + elif func == 'run_log': + print(runLog()) + else: + print('error') diff --git a/plugins/mail/info.json b/plugins/mail/info.json new file mode 100755 index 000000000..b8dd1eace --- /dev/null +++ b/plugins/mail/info.json @@ -0,0 +1,18 @@ +{ + "sort": 7, + "ps": "简单邮件服务[DEV]", + "name": "mail", + "title": "mail", + "shell": "install.sh", + "versions":["1.0"], + "updates":["1.0"], + "tip": "soft", + "checks": "server/mail", + "path": "server/mail", + "display": 1, + "author": "midoks", + "date": "2022-09-13", + "home": "https://github.com/midoks/mdserver-web", + "type": 0, + "pid": "2" +} \ No newline at end of file diff --git a/plugins/mail/install.sh b/plugins/mail/install.sh new file mode 100755 index 000000000..04a563fe9 --- /dev/null +++ b/plugins/mail/install.sh @@ -0,0 +1,25 @@ +#!/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") + +install_tmp=${rootPath}/tmp/mw_install.pl + +action=$1 +type=$2 + +if [ "${2}" == "" ];then + echo '缺少安装脚本...' > $install_tmp + exit 0 +fi + +if [ ! -d $curPath/versions/$2 ];then + echo '缺少安装脚本2...' > $install_tmp + exit 0 +fi + +sh -x $curPath/versions/$2/install.sh $1 diff --git a/plugins/mail/versions/1.0/install.sh b/plugins/mail/versions/1.0/install.sh new file mode 100755 index 000000000..7ec7a436e --- /dev/null +++ b/plugins/mail/versions/1.0/install.sh @@ -0,0 +1,77 @@ +#!/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") + +install_tmp=${rootPath}/tmp/mw_install.pl +VERSION=$2 + +cpu_arch=`arch` +if [[ $cpu_arch != "x86_64" ]];then + echo 'Does not support non-x86 system installation' + exit 0 +fi + +# if [ -f "/usr/bin/apt-get" ];then +# systemver='ubuntu' +# elif [ -f "/etc/redhat-release" ];then +# systemver=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'` +# postfixver=`postconf mail_version|sed -r 's/.* ([0-9\.]+)$/\1/'` +# else +# echo 'Unsupported system version' +# exit 0 +# fi + +bash ${rootPath}/scripts/getos.sh +OSNAME=`cat ${rootPath}/data/osname.pl` +OSNAME_ID=`cat /etc/*-release | grep VERSION_ID | awk -F = '{print $2}' | awk -F "\"" '{print $2}'` + + + +Install_debain(){ + +} + +Install_App() +{ + echo '正在安装脚本文件...' > $install_tmp + mkdir -p $serverPath/source + + if [[ $OSNAME = "centos" ]]; then + + if [[ $OSNAME_ID == "7" ]];then + Install_centos7 + fi + + if [[ $OSNAME_ID == "8" ]];then + Install_centos8 + fi + + elif [[ $OSNAME = "debian" ]]; then + Install_debain + else + Install_ubuntu + fi +} + +Uninstall_App() +{ + + if [ -f $serverPath/mail/initd/mail ];then + $serverPath/mail/initd/mail stop + fi + + rm -rf $serverPath/mail + echo "Uninstall_Mail" > $install_tmp +} + +action=$1 +if [ "${1}" == 'install' ];then + Install_App +else + Uninstall_App +fi diff --git a/plugins/php/versions/common/gettext.sh b/plugins/php/versions/common/gettext.sh new file mode 100755 index 000000000..602671413 --- /dev/null +++ b/plugins/php/versions/common/gettext.sh @@ -0,0 +1,113 @@ +#!/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") +rootPath=$(dirname "$rootPath") +rootPath=$(dirname "$rootPath") +serverPath=$(dirname "$rootPath") +sourcePath=${serverPath}/source/php + +actionType=$1 +version=$2 + +LIBNAME=gettext +LIBV=0 + +# if [ "$version" == "53" ];then +# echo "i wont support it" +# exit +# fi + +LIB_PATH_NAME=lib/php +if [ -d $serverPath/php/${version}/lib64 ];then + LIB_PATH_NAME=lib64 +fi + +NON_ZTS_FILENAME=`ls $serverPath/php/${version}/${LIB_PATH_NAME}/extensions | grep no-debug-non-zts` +extFile=$serverPath/php/${version}/${LIB_PATH_NAME}/extensions/${NON_ZTS_FILENAME}/${LIBNAME}.so + +sysName=`uname` +if [ "$sysName" == "Darwin" ];then + BAK='_bak' +else + BAK='' +fi + +Install_lib() +{ + + isInstall=`cat $serverPath/php/$version/etc/php.ini|grep "${LIBNAME}.so"` + if [ "${isInstall}" != "" ];then + echo "php-$version 已安装${LIBNAME},请选择其它版本!" + return + fi + + if [ ! -f "$extFile" ];then + + if [ ! -d $sourcePath/php${version}/ext ];then + cd $serverPath/mdserver-web/plugins/php && /bin/bash install.sh install ${version} + fi + + cd $sourcePath/php${version}/ext/${LIBNAME} + + $serverPath/php/$version/bin/phpize + ./configure --with-php-config=$serverPath/php/$version/bin/php-config + + FIND_C99=`cat Makefile|grep c99` + if [ "$FIND_C99" == "" ];then + sed -i $BAK 's/CFLAGS \=/CFLAGS \= -std=c99/g' Makefile + fi + + make clean && make && make install && make clean + + fi + + if [ ! -f "$extFile" ];then + echo "ERROR!" + return + fi + + + echo "" >> $serverPath/php/$version/etc/php.ini + echo "[${LIBNAME}]" >> $serverPath/php/$version/etc/php.ini + echo "extension=${LIBNAME}.so" >> $serverPath/php/$version/etc/php.ini + + bash ${rootPath}/plugins/php/versions/lib.sh $version restart + echo '===========================================================' + echo 'successful!' +} + + +Uninstall_lib() +{ + if [ ! -f "$serverPath/php/$version/bin/php-config" ];then + echo "php-$version 未安装,请选择其它版本!" + return + fi + + if [ ! -f "$extFile" ];then + echo "php-$version 未安装${LIBNAME},请选择其它版本!" + return + fi + + echo $serverPath/php/$version/etc/php.ini + sed -i $BAK "/${LIBNAME}.so/d" $serverPath/php/$version/etc/php.ini + sed -i $BAK "/${LIBNAME}/d" $serverPath/php/$version/etc/php.ini + + rm -f $extFile + bash ${rootPath}/plugins/php/versions/lib.sh $version restart + echo '===============================================' + echo 'successful!' +} + + + +if [ "$actionType" == 'install' ];then + Install_lib +elif [ "$actionType" == 'uninstall' ];then + Uninstall_lib +fi \ No newline at end of file diff --git a/plugins/php/versions/phplib.conf b/plugins/php/versions/phplib.conf index 765163585..3862c4a68 100755 --- a/plugins/php/versions/phplib.conf +++ b/plugins/php/versions/phplib.conf @@ -219,6 +219,28 @@ "shell": "igbinary.sh", "check": "igbinary.so" }, + { + "name": "gettext", + "versions": [ + "52", + "53", + "54", + "55", + "56", + "70", + "71", + "72", + "73", + "74", + "80", + "81", + "82" + ], + "type": "通用扩展", + "msg": "国际化与本地化!", + "shell": "gettext.sh", + "check": "gettext.so" + }, { "name": "gd", "versions": [