From 7b0e65de42e85e6c3e877d950dc7b44034bce0d6 Mon Sep 17 00:00:00 2001 From: midoks Date: Thu, 28 Sep 2023 19:35:39 +0800 Subject: [PATCH 01/32] update --- rewrite/nginx/header_acao.conf | 2 -- rewrite/nginx/header_cors.conf | 9 +++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) delete mode 100755 rewrite/nginx/header_acao.conf create mode 100755 rewrite/nginx/header_cors.conf diff --git a/rewrite/nginx/header_acao.conf b/rewrite/nginx/header_acao.conf deleted file mode 100755 index 11c8f3f85..000000000 --- a/rewrite/nginx/header_acao.conf +++ /dev/null @@ -1,2 +0,0 @@ -add_header Access-Control-Allow-Origin *; -add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; \ No newline at end of file diff --git a/rewrite/nginx/header_cors.conf b/rewrite/nginx/header_cors.conf new file mode 100755 index 000000000..afc176f70 --- /dev/null +++ b/rewrite/nginx/header_cors.conf @@ -0,0 +1,9 @@ + +add_header Access-Control-Allow-Origin *; +add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; + + + +#add_header Access-Control-Allow-Origin *; +#add_header Access-Control-Allow-Methods *; +#add_header Access-Control-Allow-Header *; From 99c6c2685955df0c1daa3eca0a350f4f16b56de1 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 14:24:14 +0800 Subject: [PATCH 02/32] Update push_ad.py --- plugins/tgbot/startup/extend/push_ad.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tgbot/startup/extend/push_ad.py b/plugins/tgbot/startup/extend/push_ad.py index 63bb5d0eb..bba3ac8f4 100644 --- a/plugins/tgbot/startup/extend/push_ad.py +++ b/plugins/tgbot/startup/extend/push_ad.py @@ -42,7 +42,7 @@ def send_msg(bot, tag='ad', trigger_time=300): # 信号只在一个周期内执行一次|end # https://t.me/gjgzs2022 | 22/m - # 高价收量 👑 集团收量 ❤️ 流量变现/支付宝代付 ❤️ 微信代付/实名认证/过人脸🕵️‍♀️各种账号处理✅ | 28/m + # 高价收量 👑 集团收量 ❤️ 流量变现/支付宝代付 ❤️ 微信代付/实名认证/过人脸🕵️‍♀️各种账号处理✅ | 28/m | next 12/28 # https://zhaoziyuan.la/ | web | 15/m | 2m | next,7/15 # 腾云机场 |9/m # 🚀鲲鹏VPN | 13/m | next,10/13 From c0240836f79b11a4536ddff487b5a2949c509ba5 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 19:53:58 +0800 Subject: [PATCH 03/32] Update php.service.tpl --- plugins/php/init.d/php.service.tpl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/php/init.d/php.service.tpl b/plugins/php/init.d/php.service.tpl index b0ffc461f..b598af691 100644 --- a/plugins/php/init.d/php.service.tpl +++ b/plugins/php/init.d/php.service.tpl @@ -1,6 +1,7 @@ # It's not recommended to modify this file in-place, because it # will be overwritten during upgrades. If you want to customize, # the best way is to use the "systemctl edit" command. +# systemctl daemon-reload [Unit] Description=The PHP {$VERSION} FastCGI Process Manager @@ -8,6 +9,7 @@ After=network.target [Service] Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" +ExecStartPre="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" PIDFile={$SERVER_PATH}/php/{$VERSION}/var/run/php-fpm.pid ExecStart={$SERVER_PATH}/php/{$VERSION}/sbin/php-fpm --nodaemonize --fpm-config {$SERVER_PATH}/php/{$VERSION}/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID From d7c6879d2fba410e1519cbc3392d00dad46222b0 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 21:14:49 +0800 Subject: [PATCH 04/32] Update php.service.tpl --- plugins/php/init.d/php.service.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/php/init.d/php.service.tpl b/plugins/php/init.d/php.service.tpl index b598af691..b43ba4a6a 100644 --- a/plugins/php/init.d/php.service.tpl +++ b/plugins/php/init.d/php.service.tpl @@ -9,7 +9,7 @@ After=network.target [Service] Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" -ExecStartPre="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" +ExecStartPre=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib PIDFile={$SERVER_PATH}/php/{$VERSION}/var/run/php-fpm.pid ExecStart={$SERVER_PATH}/php/{$VERSION}/sbin/php-fpm --nodaemonize --fpm-config {$SERVER_PATH}/php/{$VERSION}/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID From 3447c1e48f96e3e9f439c25448ad9d2b938b9278 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 21:35:31 +0800 Subject: [PATCH 05/32] Update php.service.tpl --- plugins/php/init.d/php.service.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/php/init.d/php.service.tpl b/plugins/php/init.d/php.service.tpl index b43ba4a6a..0ae3fdbbc 100644 --- a/plugins/php/init.d/php.service.tpl +++ b/plugins/php/init.d/php.service.tpl @@ -9,7 +9,7 @@ After=network.target [Service] Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" -ExecStartPre=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib +#ExecStartPre=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib PIDFile={$SERVER_PATH}/php/{$VERSION}/var/run/php-fpm.pid ExecStart={$SERVER_PATH}/php/{$VERSION}/sbin/php-fpm --nodaemonize --fpm-config {$SERVER_PATH}/php/{$VERSION}/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID From 59e616919f3a9ad6f095c7c4e46cf60d550af1cd Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:48:38 +0800 Subject: [PATCH 06/32] =?UTF-8?q?mosquitto=20=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/mosquitto/config/mosquitto.conf | 87 ++++ plugins/mosquitto/ico.png | Bin 0 -> 1373 bytes plugins/mosquitto/index.html | 19 + plugins/mosquitto/index.py | 372 ++++++++++++++++++ plugins/mosquitto/info.json | 18 + .../mosquitto/init.d/mosquitto.service.tpl | 12 + plugins/mosquitto/init.d/mosquitto.tpl | 73 ++++ plugins/mosquitto/install.sh | 71 ++++ plugins/mosquitto/js/mosquitto.js | 107 +++++ 9 files changed, 759 insertions(+) create mode 100644 plugins/mosquitto/config/mosquitto.conf create mode 100644 plugins/mosquitto/ico.png create mode 100755 plugins/mosquitto/index.html create mode 100755 plugins/mosquitto/index.py create mode 100755 plugins/mosquitto/info.json create mode 100644 plugins/mosquitto/init.d/mosquitto.service.tpl create mode 100644 plugins/mosquitto/init.d/mosquitto.tpl create mode 100755 plugins/mosquitto/install.sh create mode 100755 plugins/mosquitto/js/mosquitto.js diff --git a/plugins/mosquitto/config/mosquitto.conf b/plugins/mosquitto/config/mosquitto.conf new file mode 100644 index 000000000..d38e0e7fe --- /dev/null +++ b/plugins/mosquitto/config/mosquitto.conf @@ -0,0 +1,87 @@ +daemonize yes +pidfile {$SERVER_PATH}/redis/redis_6379.pid + +bind 127.0.0.1 +port 6379 +requirepass {$REDIS_PASS} + +timeout 0 +tcp-keepalive 0 + +loglevel notice + +logfile {$SERVER_PATH}/redis/data/redis.log +databases 16 + +################################ SNAPSHOTTING ################################# + +save 900 1 +save 300 10 +save 60 10000 +stop-writes-on-bgsave-error yes +rdbcompression yes +rdbchecksum yes +dbfilename dump.rdb +dir {$SERVER_PATH}/redis/data/ + +################################# REPLICATION ################################# + +slave-serve-stale-data yes +slave-read-only yes + +repl-disable-tcp-nodelay no +slave-priority 100 + +################################## SECURITY ################################### + + +################################### LIMITS #################################### +maxclients 10000 +#maxmemory-samples 3 +maxmemory 218mb +maxmemory-policy volatile-ttl + +############################## APPEND ONLY MODE ############################### + + +#appendonly no +# appendfsync always +#appendfsync everysec +# appendfsync no +#no-appendfsync-on-rewrite no + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +################################ LUA SCRIPTING ############################### + +lua-time-limit 5000 + +################################## SLOW LOG ################################### + + +slowlog-log-slower-than 10000 +slowlog-max-len 128 + +############################### ADVANCED CONFIG ############################### + +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 + +list-max-ziplist-entries 512 +list-max-ziplist-value 64 + +set-max-intset-entries 512 + +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 + +activerehashing yes + +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit slave 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 + +hz 10 + +aof-rewrite-incremental-fsync yes \ No newline at end of file diff --git a/plugins/mosquitto/ico.png b/plugins/mosquitto/ico.png new file mode 100644 index 0000000000000000000000000000000000000000..d39fde819bebeb143466d890ea6bbb96645c2271 GIT binary patch literal 1373 zcmV-j1)}Px)7fD1xR9Hvtms@O9RTPH5H8UE5Q4~c$P>hOEF&f4AAQ2L858e`QXlyhHv9vQ( zAf=%QmMH=)Hx-7NX&c%g1fyIuk;G_-8oWhKh?j&|A|eKi0SSr(0(EAV*?aaGPTT1? z?bOIa_fvb$*=zm#-~YeX8sRKoa+c#`0AQ&%G{E2hgT*qSVXgsU?)xf9u(#N~g}y6U zgIdlILM#HpK*%La0SQvnNejnH0a_A34Ko9!9$}~jp)3W02y@;4M-diEg0+1G*(ZQn z!CeH11J^kq+XzrCaelElE4d2cHQ*r!tep%IY2u^a0__z*jc_f>tHAvZ*f$6-NP^ES zuqrO#1S)MDcR=q!SOZ+|fW1eWS<=jp#R4q~pw(HBC=fw72jw?lK1tS#x!5dg<-p4b z8DOp?*kGSW32~SR*!>rx{Ee`d6!pdEvmiiyf*`|~4%P%0qntum#c>*BBPSfNNr=7f zah+IEc9CJ4H1nPPZW=>5mnFdS2tkx1D0PgWS)%q(c~_4B^XTkNLexl%gErxG#u8+e zPiH;lXeC9hv~a}jyMX{L2ov0f-3Vcc^GUt{-2mFe0bW6P(CKU!N?4ls+9t@Bm3m-i zu{uII=G?s6+oNF~2UY@OT%LD<*^*?RKW+}7(^(x*<#hHdP)m|cKAlxrEqP_7XoR^B z+fgbc$xeINDGXvTH7K}wL8szIv6jl9CbQ-*lG{kE&5|^ zCP;NoF6E3Q$V!B#bNNHuEHVB%!(b&BAuM(s!Fclkuo$sdac>s`>_>PVcmTM~_b%c7 zHeJPAUjgp}(}2-kPFK%K8f87FED>Su0H%`SC26shqWi$A72IgcfH0{5RTCt^7dnH> z$Y7*k4)lg3DRYc(MR?3U&oEq?IILmr13u^$(-0xlNP@TWj>RA5*afICpO0(Chelo)Ay#dgTZn#AZ2 zzD2mg1=!$fm(_tr7=yALm|TE?-n`n2QY}eLY4M7;VBpQ00HJmoXz>VyD7jDgpn@hI|#GA0k@D$ikb&~K<`Fr z^0mAlNHbHK*V0Eq(DSMnuJ}gSR`8vtJZS27$+finDlZa(J!>U|2 zG1H83?-63M#X7a<)hh-&xxI>Eq-nIh^UPXqONB7c_pFT|wG!j^qEY!i>@&dJwO5kg zBxa(9sgmUTz5w&~lnk(&NwSgWl3=4ZNB-{sb8L1oNh!ekmBIc1(o>9nx#9tU|0M&Z f#vZuhQW^XQ&e*m%6nz8K00000NkvXXu0mjf(tBsC literal 0 HcmV?d00001 diff --git a/plugins/mosquitto/index.html b/plugins/mosquitto/index.html new file mode 100755 index 000000000..cc279e0ef --- /dev/null +++ b/plugins/mosquitto/index.html @@ -0,0 +1,19 @@ +
+
+
+
+

服务

+

自启动

+

配置修改

+

日志

+
+
+
+
+
+
+ \ No newline at end of file diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py new file mode 100755 index 000000000..b2a71f163 --- /dev/null +++ b/plugins/mosquitto/index.py @@ -0,0 +1,372 @@ +# 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 'mosquito' + + +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 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[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 status(): + data = mw.execShell( + "ps aux|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) + conf_content = conf_content.replace( + '{$REDIS_PASS}', mw.getRandomString(10)) + + mw.writeFile(dst_conf, conf_content) + mw.writeFile(dst_conf_init, 'ok') + + # systemd + systemDir = mw.systemdCfgDir() + systemService = systemDir + '/redis.service' + if os.path.exists(systemDir) and not os.path.exists(systemService): + systemServiceTpl = getPluginDir() + '/init.d/redis.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 redisOp(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 + ' redis') + if data[1] == '': + return 'ok' + return data[1] + + +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(): + s = status() + if s == 'stop': + return mw.returnJson(False, '未启动') + + requirepass = "" + + conf = getServerDir() + '/redis.conf' + content = mw.readFile(conf) + rep = "^(requirepass" + ')\s*([.0-9A-Za-z_& ~]+)' + tmp = re.search(rep, content, re.M) + if tmp: + requirepass = tmp.groups()[1] + + default_ip = '127.0.0.1' + # findDebian = mw.execShell('cat /etc/issue |grep Debian') + # if findDebian[0] != '': + # default_ip = mw.getLocalIp() + cmd = getServerDir() + "/bin/redis-cli -h " + default_ip + " info" + if requirepass != "": + cmd = getServerDir() + '/bin/redis-cli -h ' + default_ip + \ + ' -a "' + requirepass + '" 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(): + 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/redis.log' + + +def getRedisConfInfo(): + conf = getServerDir() + '/redis.conf' + content = mw.readFile(conf) + + gets = [ + {'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)'}, + {'name': 'port', 'type': 2, 'ps': '绑定端口'}, + {'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开'}, + {'name': 'maxclients', 'type': 2, 'ps': '最大输入时间'}, + {'name': 'databases', 'type': 2, 'ps': '数据库数量'}, + {'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码'}, + {'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制'} + ] + content = mw.readFile(conf) + + result = [] + for g in gets: + rep = "^(" + g['name'] + ')\s*([.0-9A-Za-z_& ~]+)' + tmp = re.search(rep, content, re.M) + if not tmp: + g['value'] = '' + result.append(g) + continue + g['value'] = tmp.groups()[1] + if g['name'] == 'maxmemory': + g['value'] = g['value'].strip("mb") + result.append(g) + + return result + + +def getRedisConf(): + data = getRedisConfInfo() + return mw.getJson(data) + + +def submitRedisConf(): + gets = ['bind', 'port', 'timeout', 'maxclients', + 'databases', 'requirepass', 'maxmemory'] + args = getArgs() + conf = getServerDir() + '/redis.conf' + content = mw.readFile(conf) + for g in gets: + if g in args: + rep = g + '\s*([.0-9A-Za-z_& ~]+)' + val = g + ' ' + args[g] + + if g == 'maxmemory': + val = g + ' ' + args[g] + "mb" + + if g == 'requirepass' and args[g] == '': + content = re.sub('requirepass', '#requirepass', content) + if g == 'requirepass' and args[g] != '': + content = re.sub('#requirepass', 'requirepass', content) + content = re.sub(rep, val, content) + + if g != 'requirepass': + content = re.sub(rep, val, content) + mw.writeFile(conf, content) + reload() + return mw.returnJson(True, '设置成功') + +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()) + elif func == 'get_redis_conf': + print(getRedisConf()) + elif func == 'submit_redis_conf': + print(submitRedisConf()) + else: + print('error') diff --git a/plugins/mosquitto/info.json b/plugins/mosquitto/info.json new file mode 100755 index 000000000..b2206251f --- /dev/null +++ b/plugins/mosquitto/info.json @@ -0,0 +1,18 @@ +{ + "sort": 999, + "ps": "MQTT是一个消息队列遥测传输软件", + "name": "mosquitto", + "title": "mosquitto", + "shell": "install.sh", + "versions":["2.0.18"], + "updates":["2.0.18"], + "tip": "soft", + "checks": "server/mosquitto", + "path": "server/mosquitto", + "display": 1, + "author": "midoks", + "date": "2023-09-28", + "home": "https://mosquitto.org", + "type": "soft", + "pid": "4" +} diff --git a/plugins/mosquitto/init.d/mosquitto.service.tpl b/plugins/mosquitto/init.d/mosquitto.service.tpl new file mode 100644 index 000000000..8e8eb5693 --- /dev/null +++ b/plugins/mosquitto/init.d/mosquitto.service.tpl @@ -0,0 +1,12 @@ +[Unit] +Description=Redis In-Memory Data Store +After=network.target + +[Service] +Type=forking +ExecStart={$SERVER_PATH}/redis/bin/redis-server {$SERVER_PATH}/redis/redis.conf +ExecReload=/bin/kill -USR2 $MAINPID +Restart=on-failure + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/plugins/mosquitto/init.d/mosquitto.tpl b/plugins/mosquitto/init.d/mosquitto.tpl new file mode 100644 index 000000000..02e0440c2 --- /dev/null +++ b/plugins/mosquitto/init.d/mosquitto.tpl @@ -0,0 +1,73 @@ +#!/bin/sh +# chkconfig: 2345 55 25 +# description: Redis Service + +### BEGIN INIT INFO +# Provides: Redis +# Required-Start: $all +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts Redis +# Description: starts the MDW-Web +### END INIT INFO + +# Simple Redis init.d script conceived to work on Linux systems +# as it does use of the /proc filesystem. + +CONF="{$SERVER_PATH}/redis/redis.conf" +REDISPORT=$(cat $CONF |grep port|grep -v '#'|awk '{print $2}') +REDISPASS=$(cat $CONF |grep requirepass|grep -v '#'|awk '{print $2}') +if [ "$REDISPASS" != "" ];then + REDISPASS=" -a $REDISPASS" +fi +EXEC={$SERVER_PATH}/redis/bin/redis-server +CLIEXEC="{$SERVER_PATH}/redis/bin/redis-cli -p $REDISPORT$REDISPASS" +PIDFILE={$SERVER_PATH}/redis/redis_6379.pid + +mkdir -p {$SERVER_PATH}/redis/data + +redis_start(){ + if [ -f $PIDFILE ];then + kill -9 `cat $PIDFILE` + fi + + echo "Starting Redis server..." + nohup $EXEC $CONF >> {$SERVER_PATH}/redis/logs.pl 2>&1 & +} +redis_stop(){ + if [ ! -f $PIDFILE ] + then + echo "$PIDFILE does not exist, process is not running" + else + PID=$(cat $PIDFILE) + echo "Stopping ..." + $CLIEXEC shutdown + while [ -x /proc/${PID} ] + do + echo "Waiting for Redis to shutdown ..." + sleep 1 + done + echo "Redis stopped" + rm -rf $PIDFILE + fi +} + + +case "$1" in + start) + redis_start + ;; + stop) + redis_stop + ;; + restart|reload) + redis_stop + sleep 0.3 + redis_start + ;; + *) + echo "Please use start or stop as first argument" + ;; +esac + diff --git a/plugins/mosquitto/install.sh b/plugins/mosquitto/install.sh new file mode 100755 index 000000000..9af8f2d17 --- /dev/null +++ b/plugins/mosquitto/install.sh @@ -0,0 +1,71 @@ +#!/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` +echo "use system: ${sysName}" + +# cd /Users/midoks/Desktop/mwdev/server/mdserver-web/plugins/mosquitto && bash install.sh install 2.0.18 +# cd /www/mdserver-web/plugins/mosquitto && bash install.sh install 2.0.18 + +install_tmp=${rootPath}/tmp/mw_install.pl + +VERSION=$2 + +Install_App() +{ + echo '正在安装脚本文件...' > $install_tmp + mkdir -p $serverPath/source + + if [ ! -f $serverPath/source/mosquitto-${VERSION}.tar.gz ];then + wget -O $serverPath/source/mosquitto-${VERSION}.tar.gz https://mosquitto.org/files/source/mosquitto-${VERSION}.tar.gz + fi + + if [ ! -d mosquitto-${VERSION} ];then + cd $serverPath/source && tar -zxvf mosquitto-${VERSION}.tar.gz + fi + + + + mkdir -p $serverPath/mosquitto + cd mosquitto-${VERSION} && cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=$serverPath/mosquitto && make install + + + if [ -d $serverPath/mosquitto ];then + echo "${VERSION}" > $serverPath/mosquitto/version.pl + echo '安装完成' > $install_tmp + + + cd ${rootPath} && python3 ${rootPath}/plugins/mosquitto/index.py start + cd ${rootPath} && python3 ${rootPath}/plugins/mosquitto/index.py initd_install + fi +} + +Uninstall_App() +{ + if [ -f /usr/lib/systemd/system/mosquitto.service ];then + systemctl stop mosquitto + systemctl disable mosquitto + rm -rf /usr/lib/systemd/system/mosquitto.service + systemctl daemon-reload + fi + + if [ -f $serverPath/mosquitto/initd/mosquitto ];then + $serverPath/mosquitto/initd/mosquitto stop + fi + + rm -rf $serverPath/mosquitto + echo "uninstall mosquitto" > $install_tmp +} + +action=$1 +if [ "${1}" == 'install' ];then + Install_App +else + Uninstall_App +fi diff --git a/plugins/mosquitto/js/mosquitto.js b/plugins/mosquitto/js/mosquitto.js new file mode 100755 index 000000000..181982277 --- /dev/null +++ b/plugins/mosquitto/js/mosquitto.js @@ -0,0 +1,107 @@ +function redisPost(method, version, args,callback){ + var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); + + var req_data = {}; + req_data['name'] = 'mosquitto'; + req_data['func'] = method; + req_data['version'] = version; + + if (typeof(args) == 'string'){ + req_data['args'] = JSON.stringify(toArrayObject(args)); + } else { + req_data['args'] = JSON.stringify(args); + } + + $.post('/plugins/run', req_data, function(data) { + layer.close(loadT); + if (!data.status){ + //错误展示10S + layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']}); + return; + } + + if(typeof(callback) == 'function'){ + callback(data); + } + },'json'); +} + +function redisPostCallbak(method, version, args,callback){ + var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); + + var req_data = {}; + req_data['name'] = 'mosquitto'; + req_data['func'] = method; + args['version'] = version; + + if (typeof(args) == 'string'){ + req_data['args'] = JSON.stringify(toArrayObject(args)); + } else { + req_data['args'] = JSON.stringify(args); + } + + $.post('/plugins/callback', req_data, function(data) { + layer.close(loadT); + if (!data.status){ + layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); + return; + } + + if(typeof(callback) == 'function'){ + callback(data); + } + },'json'); +} + +//配置修改 +function getRedisConfig(version) { + redisPost('get_redis_conf', version,'',function(data){ + // console.log(data); + var rdata = $.parseJSON(data.data); + // console.log(rdata); + var mlist = ''; + for (var i = 0; i < rdata.length; i++) { + var w = '70' + if (rdata[i].name == 'error_reporting') w = '250'; + var ibody = ''; + switch (rdata[i].type) { + case 0: + var selected_1 = (rdata[i].value == 1) ? 'selected' : ''; + var selected_0 = (rdata[i].value == 0) ? 'selected' : ''; + ibody = '' + break; + case 1: + var selected_1 = (rdata[i].value == 'On') ? 'selected' : ''; + var selected_0 = (rdata[i].value == 'Off') ? 'selected' : ''; + ibody = '' + break; + } + mlist += '

' + rdata[i].name + '' + ibody + ', ' + rdata[i].ps + '

' + } + var phpCon = '
' + mlist + '\ +
\ +
\ +
' + $(".soft-man-con").html(phpCon); + }); +} + +//提交PHP配置 +function submitConf(version) { + var data = { + version: version, + bind: $("input[name='bind']").val(), + 'port': $("input[name='port']").val(), + 'timeout': $("input[name='timeout']").val(), + maxclients: $("input[name='maxclients']").val(), + databases: $("input[name='databases']").val(), + requirepass: $("input[name='requirepass']").val(), + maxmemory: $("input[name='maxmemory']").val(), + }; + + redisPost('submit_redis_conf', version, data, function(ret_data){ + var rdata = $.parseJSON(ret_data.data); + layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + }); +} + From fc904c9a5d1a9bc5d4a3e5fd77da445bd1514910 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:54:14 +0800 Subject: [PATCH 07/32] update --- scripts/install/debian.sh | 2 ++ scripts/install/ubuntu.sh | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/scripts/install/debian.sh b/scripts/install/debian.sh index 38097e8f6..303ebc23a 100644 --- a/scripts/install/debian.sh +++ b/scripts/install/debian.sh @@ -184,6 +184,8 @@ apt install -y libevent-dev libncurses5-dev libldap2-dev apt install -y libzip-dev apt install -y libicu-dev +apt install -y xsltproc + apt install -y libcurl4-openssl-dev apt install -y curl libcurl4-gnutls-dev diff --git a/scripts/install/ubuntu.sh b/scripts/install/ubuntu.sh index 01b46be77..ac4e026f0 100644 --- a/scripts/install/ubuntu.sh +++ b/scripts/install/ubuntu.sh @@ -21,6 +21,7 @@ apt install -y expect apt install -y cron + apt install -y locate locale-gen en_US.UTF-8 localedef -v -c -i en_US -f UTF-8 en_US.UTF-8 @@ -112,6 +113,9 @@ apt install -y libevent-dev libncurses5-dev libldap2-dev apt install -y libzip-dev apt install -y libicu-dev +# mqtt +apt install -y xsltproc + apt install -y build-essential apt install -y libcurl4-openssl-dev From 20d85d0bd7326644011d9a19b63bd67a16d9262c Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:56:56 +0800 Subject: [PATCH 08/32] Update index.py --- plugins/mosquitto/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index b2a71f163..95446cd25 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -38,7 +38,7 @@ def getInitDFile(): def getConf(): - path = getServerDir() + "/redis.conf" + path = getServerDir() + "/etc/mosquitto/mosquitto.conf" return path From d50936349cdad52fba47e1e4a83b033598483e71 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:58:20 +0800 Subject: [PATCH 09/32] Update index.py --- plugins/mosquitto/index.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index 95446cd25..b16cf9f37 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -104,7 +104,7 @@ def initDreplace(): mw.execShell('chmod +x ' + file_bin) # config replace - dst_conf = getServerDir() + '/redis.conf' + dst_conf = getServerDir() + '/' + getPluginName() + '.conf' dst_conf_init = getServerDir() + '/init.pl' if not os.path.exists(dst_conf_init): conf_content = mw.readFile(getConfTpl()) @@ -117,9 +117,9 @@ def initDreplace(): # systemd systemDir = mw.systemdCfgDir() - systemService = systemDir + '/redis.service' + systemService = systemDir + '/' + getPluginName() + '.service' if os.path.exists(systemDir) and not os.path.exists(systemService): - systemServiceTpl = getPluginDir() + '/init.d/redis.service.tpl' + 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) From 9093d4bc3f997af51bdc287846a3ede5c46ea153 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:59:03 +0800 Subject: [PATCH 10/32] Update index.py --- plugins/mosquitto/index.py | 61 ++++---------------------------------- 1 file changed, 5 insertions(+), 56 deletions(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index b16cf9f37..f921ce85a 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -129,7 +129,7 @@ def initDreplace(): return file_bin -def redisOp(method): +def mqttOp(method): file = initDreplace() current_os = mw.getOs() @@ -152,15 +152,15 @@ def redisOp(method): def start(): - return redisOp('start') + return mqttOp('start') def stop(): - return redisOp('stop') + return mqttOp('stop') def restart(): - status = redisOp('restart') + status = mqttOp('restart') log_file = runLog() mw.execShell("echo '' > " + log_file) @@ -168,58 +168,7 @@ def restart(): def reload(): - return redisOp('reload') - - -def runInfo(): - s = status() - if s == 'stop': - return mw.returnJson(False, '未启动') - - requirepass = "" - - conf = getServerDir() + '/redis.conf' - content = mw.readFile(conf) - rep = "^(requirepass" + ')\s*([.0-9A-Za-z_& ~]+)' - tmp = re.search(rep, content, re.M) - if tmp: - requirepass = tmp.groups()[1] - - default_ip = '127.0.0.1' - # findDebian = mw.execShell('cat /etc/issue |grep Debian') - # if findDebian[0] != '': - # default_ip = mw.getLocalIp() - cmd = getServerDir() + "/bin/redis-cli -h " + default_ip + " info" - if requirepass != "": - cmd = getServerDir() + '/bin/redis-cli -h ' + default_ip + \ - ' -a "' + requirepass + '" 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) + return mqttOp('reload') def initdStatus(): From 73ff1c664e43239e1ba8ffcd99deb1184c1f32be Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 22:59:39 +0800 Subject: [PATCH 11/32] Update index.py --- plugins/mosquitto/index.py | 66 -------------------------------------- 1 file changed, 66 deletions(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index f921ce85a..9daa00ca9 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -227,68 +227,6 @@ def runLog(): return getServerDir() + '/data/redis.log' -def getRedisConfInfo(): - conf = getServerDir() + '/redis.conf' - content = mw.readFile(conf) - - gets = [ - {'name': 'bind', 'type': 2, 'ps': '绑定IP(修改绑定IP可能会存在安全隐患)'}, - {'name': 'port', 'type': 2, 'ps': '绑定端口'}, - {'name': 'timeout', 'type': 2, 'ps': '空闲链接超时时间,0表示不断开'}, - {'name': 'maxclients', 'type': 2, 'ps': '最大输入时间'}, - {'name': 'databases', 'type': 2, 'ps': '数据库数量'}, - {'name': 'requirepass', 'type': 2, 'ps': 'redis密码,留空代表没有设置密码'}, - {'name': 'maxmemory', 'type': 2, 'ps': 'MB,最大使用内存,0表示不限制'} - ] - content = mw.readFile(conf) - - result = [] - for g in gets: - rep = "^(" + g['name'] + ')\s*([.0-9A-Za-z_& ~]+)' - tmp = re.search(rep, content, re.M) - if not tmp: - g['value'] = '' - result.append(g) - continue - g['value'] = tmp.groups()[1] - if g['name'] == 'maxmemory': - g['value'] = g['value'].strip("mb") - result.append(g) - - return result - - -def getRedisConf(): - data = getRedisConfInfo() - return mw.getJson(data) - - -def submitRedisConf(): - gets = ['bind', 'port', 'timeout', 'maxclients', - 'databases', 'requirepass', 'maxmemory'] - args = getArgs() - conf = getServerDir() + '/redis.conf' - content = mw.readFile(conf) - for g in gets: - if g in args: - rep = g + '\s*([.0-9A-Za-z_& ~]+)' - val = g + ' ' + args[g] - - if g == 'maxmemory': - val = g + ' ' + args[g] + "mb" - - if g == 'requirepass' and args[g] == '': - content = re.sub('requirepass', '#requirepass', content) - if g == 'requirepass' and args[g] != '': - content = re.sub('#requirepass', 'requirepass', content) - content = re.sub(rep, val, content) - - if g != 'requirepass': - content = re.sub(rep, val, content) - mw.writeFile(conf, content) - reload() - return mw.returnJson(True, '设置成功') - if __name__ == "__main__": func = sys.argv[1] if func == 'status': @@ -313,9 +251,5 @@ if __name__ == "__main__": print(getConf()) elif func == 'run_log': print(runLog()) - elif func == 'get_redis_conf': - print(getRedisConf()) - elif func == 'submit_redis_conf': - print(submitRedisConf()) else: print('error') From 82fc1a3609774b6dbd696f96f2db7512bcc8a9ec Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:01:03 +0800 Subject: [PATCH 12/32] Update index.py --- plugins/redis/index.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/redis/index.py b/plugins/redis/index.py index eead87e57..9145b32e6 100755 --- a/plugins/redis/index.py +++ b/plugins/redis/index.py @@ -117,9 +117,9 @@ def initDreplace(): # systemd systemDir = mw.systemdCfgDir() - systemService = systemDir + '/redis.service' + systemService = systemDir + '/' + getPluginName() + '.service' if os.path.exists(systemDir) and not os.path.exists(systemService): - systemServiceTpl = getPluginDir() + '/init.d/redis.service.tpl' + 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) From 6a28e7227316568449c4c8f01e36aad9812e54c0 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:02:57 +0800 Subject: [PATCH 13/32] Update index.py --- plugins/mosquitto/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index 9daa00ca9..2c971b3c1 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -15,7 +15,7 @@ if mw.isAppleSystem(): def getPluginName(): - return 'mosquito' + return 'mosquitto' def getPluginDir(): From 0c48e0fcbbf1160f86abe45764dff3ae8e2b0681 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:11:02 +0800 Subject: [PATCH 14/32] Update mosquitto.service.tpl --- plugins/mosquitto/init.d/mosquitto.service.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/mosquitto/init.d/mosquitto.service.tpl b/plugins/mosquitto/init.d/mosquitto.service.tpl index 8e8eb5693..ad1ddcf1e 100644 --- a/plugins/mosquitto/init.d/mosquitto.service.tpl +++ b/plugins/mosquitto/init.d/mosquitto.service.tpl @@ -1,10 +1,10 @@ [Unit] -Description=Redis In-Memory Data Store +Description=Mosquitto MQTT Broker After=network.target [Service] Type=forking -ExecStart={$SERVER_PATH}/redis/bin/redis-server {$SERVER_PATH}/redis/redis.conf +ExecStart={$SERVER_PATH}/mosquitto/bin/mosquitto {$SERVER_PATH}/mosquitto/etc/mosquitto/mosquitto.conf ExecReload=/bin/kill -USR2 $MAINPID Restart=on-failure From 1129d5753a477cab1322e9456bbd73a7ae529be6 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:13:07 +0800 Subject: [PATCH 15/32] update --- plugins/mosquitto/config/mosquitto.conf | 87 ------------------------- plugins/mosquitto/index.py | 2 +- 2 files changed, 1 insertion(+), 88 deletions(-) diff --git a/plugins/mosquitto/config/mosquitto.conf b/plugins/mosquitto/config/mosquitto.conf index d38e0e7fe..e69de29bb 100644 --- a/plugins/mosquitto/config/mosquitto.conf +++ b/plugins/mosquitto/config/mosquitto.conf @@ -1,87 +0,0 @@ -daemonize yes -pidfile {$SERVER_PATH}/redis/redis_6379.pid - -bind 127.0.0.1 -port 6379 -requirepass {$REDIS_PASS} - -timeout 0 -tcp-keepalive 0 - -loglevel notice - -logfile {$SERVER_PATH}/redis/data/redis.log -databases 16 - -################################ SNAPSHOTTING ################################# - -save 900 1 -save 300 10 -save 60 10000 -stop-writes-on-bgsave-error yes -rdbcompression yes -rdbchecksum yes -dbfilename dump.rdb -dir {$SERVER_PATH}/redis/data/ - -################################# REPLICATION ################################# - -slave-serve-stale-data yes -slave-read-only yes - -repl-disable-tcp-nodelay no -slave-priority 100 - -################################## SECURITY ################################### - - -################################### LIMITS #################################### -maxclients 10000 -#maxmemory-samples 3 -maxmemory 218mb -maxmemory-policy volatile-ttl - -############################## APPEND ONLY MODE ############################### - - -#appendonly no -# appendfsync always -#appendfsync everysec -# appendfsync no -#no-appendfsync-on-rewrite no - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -################################ LUA SCRIPTING ############################### - -lua-time-limit 5000 - -################################## SLOW LOG ################################### - - -slowlog-log-slower-than 10000 -slowlog-max-len 128 - -############################### ADVANCED CONFIG ############################### - -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -list-max-ziplist-entries 512 -list-max-ziplist-value 64 - -set-max-intset-entries 512 - -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -activerehashing yes - -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -hz 10 - -aof-rewrite-incremental-fsync yes \ No newline at end of file diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index 2c971b3c1..f1913878c 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -145,7 +145,7 @@ def mqttOp(method): return 'ok' return data[1] - data = mw.execShell('systemctl ' + method + ' redis') + data = mw.execShell('systemctl ' + method + ' ' + getPluginName()) if data[1] == '': return 'ok' return data[1] From 5dfc0f7ebb5281a7a8f47e10490748d053f4cd3e Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:13:41 +0800 Subject: [PATCH 16/32] Update index.py --- plugins/mosquitto/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index f1913878c..e86cd6fed 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -74,7 +74,7 @@ def getArgs(): def status(): data = mw.execShell( - "ps aux|grep redis |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") + "ps aux|grep mosquitto |grep -v grep | grep -v python | grep -v mdserver-web | awk '{print $2}'") if data[0] == '': return 'stop' From ed509e2d8dab1fffa5d5975dc5cea7a4b86a72fd Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:15:47 +0800 Subject: [PATCH 17/32] Update index.py --- plugins/mosquitto/index.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index e86cd6fed..627dca7a6 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -43,7 +43,7 @@ def getConf(): def getConfTpl(): - path = getPluginDir() + "/config/redis.conf" + path = getPluginDir() + "/config/mosquitto.conf" return path @@ -104,13 +104,11 @@ def initDreplace(): mw.execShell('chmod +x ' + file_bin) # config replace - dst_conf = getServerDir() + '/' + getPluginName() + '.conf' + dst_conf = getServerDir() + '/etc/mosquitto/' + getPluginName() + '.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) - conf_content = conf_content.replace( - '{$REDIS_PASS}', mw.getRandomString(10)) mw.writeFile(dst_conf, conf_content) mw.writeFile(dst_conf_init, 'ok') From 3da1ff214fc942fc399f470f9c5dca33bd4d0808 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:16:58 +0800 Subject: [PATCH 18/32] Update mosquitto.service.tpl --- plugins/mosquitto/init.d/mosquitto.service.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mosquitto/init.d/mosquitto.service.tpl b/plugins/mosquitto/init.d/mosquitto.service.tpl index ad1ddcf1e..50372af02 100644 --- a/plugins/mosquitto/init.d/mosquitto.service.tpl +++ b/plugins/mosquitto/init.d/mosquitto.service.tpl @@ -4,7 +4,7 @@ After=network.target [Service] Type=forking -ExecStart={$SERVER_PATH}/mosquitto/bin/mosquitto {$SERVER_PATH}/mosquitto/etc/mosquitto/mosquitto.conf +ExecStart={$SERVER_PATH}/mosquitto/bin/mosquitto -c {$SERVER_PATH}/mosquitto/etc/mosquitto/mosquitto.conf ExecReload=/bin/kill -USR2 $MAINPID Restart=on-failure From 52a8cc694654a26a5384126d0c1c2ee544cd6db5 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:19:56 +0800 Subject: [PATCH 19/32] Update mosquitto.service.tpl --- plugins/mosquitto/init.d/mosquitto.service.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mosquitto/init.d/mosquitto.service.tpl b/plugins/mosquitto/init.d/mosquitto.service.tpl index 50372af02..7a5d2cdc0 100644 --- a/plugins/mosquitto/init.d/mosquitto.service.tpl +++ b/plugins/mosquitto/init.d/mosquitto.service.tpl @@ -4,7 +4,7 @@ After=network.target [Service] Type=forking -ExecStart={$SERVER_PATH}/mosquitto/bin/mosquitto -c {$SERVER_PATH}/mosquitto/etc/mosquitto/mosquitto.conf +ExecStart={$SERVER_PATH}/mosquitto/sbin/mosquitto -c {$SERVER_PATH}/mosquitto/etc/mosquitto/mosquitto.conf ExecReload=/bin/kill -USR2 $MAINPID Restart=on-failure From 0055fa98fab3166bcfbbbc9f17ca7ab465fc09ef Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:23:42 +0800 Subject: [PATCH 20/32] update --- plugins/mosquitto/config/mosquitto.conf | 3 +++ plugins/mosquitto/install.sh | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/plugins/mosquitto/config/mosquitto.conf b/plugins/mosquitto/config/mosquitto.conf index e69de29bb..566c13a43 100644 --- a/plugins/mosquitto/config/mosquitto.conf +++ b/plugins/mosquitto/config/mosquitto.conf @@ -0,0 +1,3 @@ + +allow_anonymous true +listener 1883 \ No newline at end of file diff --git a/plugins/mosquitto/install.sh b/plugins/mosquitto/install.sh index 9af8f2d17..2ba6221d2 100755 --- a/plugins/mosquitto/install.sh +++ b/plugins/mosquitto/install.sh @@ -19,6 +19,14 @@ VERSION=$2 Install_App() { + if id mosquitto &> /dev/null ;then + echo "mosquitto UID is `id -u mosquitto`" + echo "mosquitto Shell is `grep "^mosquitto:" /etc/passwd |cut -d':' -f7 `" + else + groupadd mosquitto + useradd -g mosquitto mosquitto + fi + echo '正在安装脚本文件...' > $install_tmp mkdir -p $serverPath/source From 101792a08121f88dfd7da0fe363bc852cafe1640 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:31:25 +0800 Subject: [PATCH 21/32] Update mosquitto.js --- plugins/mosquitto/js/mosquitto.js | 56 ++----------------------------- 1 file changed, 2 insertions(+), 54 deletions(-) diff --git a/plugins/mosquitto/js/mosquitto.js b/plugins/mosquitto/js/mosquitto.js index 181982277..e2b4dbcd8 100755 --- a/plugins/mosquitto/js/mosquitto.js +++ b/plugins/mosquitto/js/mosquitto.js @@ -1,4 +1,4 @@ -function redisPost(method, version, args,callback){ +function mqPost(method, version, args,callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; @@ -26,7 +26,7 @@ function redisPost(method, version, args,callback){ },'json'); } -function redisPostCallbak(method, version, args,callback){ +function mqPostCallbak(method, version, args,callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; @@ -53,55 +53,3 @@ function redisPostCallbak(method, version, args,callback){ },'json'); } -//配置修改 -function getRedisConfig(version) { - redisPost('get_redis_conf', version,'',function(data){ - // console.log(data); - var rdata = $.parseJSON(data.data); - // console.log(rdata); - var mlist = ''; - for (var i = 0; i < rdata.length; i++) { - var w = '70' - if (rdata[i].name == 'error_reporting') w = '250'; - var ibody = ''; - switch (rdata[i].type) { - case 0: - var selected_1 = (rdata[i].value == 1) ? 'selected' : ''; - var selected_0 = (rdata[i].value == 0) ? 'selected' : ''; - ibody = '' - break; - case 1: - var selected_1 = (rdata[i].value == 'On') ? 'selected' : ''; - var selected_0 = (rdata[i].value == 'Off') ? 'selected' : ''; - ibody = '' - break; - } - mlist += '

' + rdata[i].name + '' + ibody + ', ' + rdata[i].ps + '

' - } - var phpCon = '
' + mlist + '\ -
\ -
\ -
' - $(".soft-man-con").html(phpCon); - }); -} - -//提交PHP配置 -function submitConf(version) { - var data = { - version: version, - bind: $("input[name='bind']").val(), - 'port': $("input[name='port']").val(), - 'timeout': $("input[name='timeout']").val(), - maxclients: $("input[name='maxclients']").val(), - databases: $("input[name='databases']").val(), - requirepass: $("input[name='requirepass']").val(), - maxmemory: $("input[name='maxmemory']").val(), - }; - - redisPost('submit_redis_conf', version, data, function(ret_data){ - var rdata = $.parseJSON(ret_data.data); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); - }); -} - From 0b712c724204e3ba1c88da10719fe2e86381d808 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:33:59 +0800 Subject: [PATCH 22/32] Update install.sh --- plugins/mosquitto/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/mosquitto/install.sh b/plugins/mosquitto/install.sh index 2ba6221d2..8f40fa15e 100755 --- a/plugins/mosquitto/install.sh +++ b/plugins/mosquitto/install.sh @@ -26,12 +26,12 @@ Install_App() groupadd mosquitto useradd -g mosquitto mosquitto fi - + echo '正在安装脚本文件...' > $install_tmp mkdir -p $serverPath/source if [ ! -f $serverPath/source/mosquitto-${VERSION}.tar.gz ];then - wget -O $serverPath/source/mosquitto-${VERSION}.tar.gz https://mosquitto.org/files/source/mosquitto-${VERSION}.tar.gz + wget --no-check-certificate -O $serverPath/source/mosquitto-${VERSION}.tar.gz https://mosquitto.org/files/source/mosquitto-${VERSION}.tar.gz fi if [ ! -d mosquitto-${VERSION} ];then From dfa53c4c4c341c8e179a6ed683a4df7c3e5a0244 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:38:13 +0800 Subject: [PATCH 23/32] Update install.sh --- plugins/mosquitto/install.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/mosquitto/install.sh b/plugins/mosquitto/install.sh index 8f40fa15e..925faa87e 100755 --- a/plugins/mosquitto/install.sh +++ b/plugins/mosquitto/install.sh @@ -39,9 +39,17 @@ Install_App() fi + INSTALL_CMD=cmake + # check cmake version + CMAKE_VERSION=`cmake -version | grep version | awk '{print $3}' | awk -F '.' '{print $1}'` + if [ "$CMAKE_VERSION" -eq "2" ];then + mkdir -p /var/log/mariadb + touch /var/log/mariadb/mariadb.log + INSTALL_CMD=cmake3 + fi mkdir -p $serverPath/mosquitto - cd mosquitto-${VERSION} && cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=$serverPath/mosquitto && make install + cd mosquitto-${VERSION} && ${INSTALL_CMD} CMakeLists.txt -DCMAKE_INSTALL_PREFIX=$serverPath/mosquitto && make install if [ -d $serverPath/mosquitto ];then From 3f424668a7b4307bce704421fa3f091fed326cbd Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:39:00 +0800 Subject: [PATCH 24/32] Update install.sh --- plugins/mosquitto/install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/mosquitto/install.sh b/plugins/mosquitto/install.sh index 925faa87e..6510720c6 100755 --- a/plugins/mosquitto/install.sh +++ b/plugins/mosquitto/install.sh @@ -49,8 +49,9 @@ Install_App() fi mkdir -p $serverPath/mosquitto - cd mosquitto-${VERSION} && ${INSTALL_CMD} CMakeLists.txt -DCMAKE_INSTALL_PREFIX=$serverPath/mosquitto && make install - + if [ ! -d $serverPath/mosquitto/bin ];then + cd mosquitto-${VERSION} && ${INSTALL_CMD} CMakeLists.txt -DCMAKE_INSTALL_PREFIX=$serverPath/mosquitto && make install + fi if [ -d $serverPath/mosquitto ];then echo "${VERSION}" > $serverPath/mosquitto/version.pl From 28bf685e7364c86c2fea4d5be664f690a6c13119 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:45:20 +0800 Subject: [PATCH 25/32] update --- plugins/mosquitto/index.html | 1 - plugins/mosquitto/index.py | 8 -------- 2 files changed, 9 deletions(-) diff --git a/plugins/mosquitto/index.html b/plugins/mosquitto/index.html index cc279e0ef..3dc4222a4 100755 --- a/plugins/mosquitto/index.html +++ b/plugins/mosquitto/index.html @@ -5,7 +5,6 @@

服务

自启动

配置修改

-

日志

diff --git a/plugins/mosquitto/index.py b/plugins/mosquitto/index.py index 627dca7a6..5ef4472f7 100755 --- a/plugins/mosquitto/index.py +++ b/plugins/mosquitto/index.py @@ -221,10 +221,6 @@ def initdUinstall(): return 'ok' -def runLog(): - return getServerDir() + '/data/redis.log' - - if __name__ == "__main__": func = sys.argv[1] if func == 'status': @@ -243,11 +239,7 @@ if __name__ == "__main__": 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') From ef36d8729e8c7a472f18cffc681c52775275861a Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:57:30 +0800 Subject: [PATCH 26/32] Update mosquitto.tpl --- plugins/mosquitto/init.d/mosquitto.tpl | 97 ++++++++++++++------------ 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/plugins/mosquitto/init.d/mosquitto.tpl b/plugins/mosquitto/init.d/mosquitto.tpl index 02e0440c2..9ff8fd5a0 100644 --- a/plugins/mosquitto/init.d/mosquitto.tpl +++ b/plugins/mosquitto/init.d/mosquitto.tpl @@ -1,73 +1,84 @@ #!/bin/sh # chkconfig: 2345 55 25 -# description: Redis Service +# description: Mosquitto MQTT Broker Service ### BEGIN INIT INFO -# Provides: Redis +# Provides: MQTT # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 -# Short-Description: starts Redis +# Short-Description: starts MQTT # Description: starts the MDW-Web ### END INIT INFO -# Simple Redis init.d script conceived to work on Linux systems +# Simple MQTT init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. -CONF="{$SERVER_PATH}/redis/redis.conf" -REDISPORT=$(cat $CONF |grep port|grep -v '#'|awk '{print $2}') -REDISPASS=$(cat $CONF |grep requirepass|grep -v '#'|awk '{print $2}') -if [ "$REDISPASS" != "" ];then - REDISPASS=" -a $REDISPASS" -fi -EXEC={$SERVER_PATH}/redis/bin/redis-server -CLIEXEC="{$SERVER_PATH}/redis/bin/redis-cli -p $REDISPORT$REDISPASS" -PIDFILE={$SERVER_PATH}/redis/redis_6379.pid +PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export LANG=en_US.UTF-8 -mkdir -p {$SERVER_PATH}/redis/data -redis_start(){ - if [ -f $PIDFILE ];then - kill -9 `cat $PIDFILE` - fi - - echo "Starting Redis server..." - nohup $EXEC $CONF >> {$SERVER_PATH}/redis/logs.pl 2>&1 & -} -redis_stop(){ - if [ ! -f $PIDFILE ] - then - echo "$PIDFILE does not exist, process is not running" - else - PID=$(cat $PIDFILE) - echo "Stopping ..." - $CLIEXEC shutdown - while [ -x /proc/${PID} ] - do - echo "Waiting for Redis to shutdown ..." - sleep 1 - done - echo "Redis stopped" - rm -rf $PIDFILE - fi +mw_path={$SERVER_PATH} +PATH=$PATH:$mw_path/bin + +if [ -f $mw_path/bin/activate ];then + source $mw_path/bin/activate +fi + +app_start(){ + isStart=`ps -ef|grep 'mosquitto' |grep -v grep | awk '{print $2}'` + if [ "$isStart" == '' ];then + echo -e "starting mosquitto... \c" + cd $mw_path + ${APP_PATH}/mosquitto/sbin/mosquitto -c ${APP_PATH}/mosquitto/etc/mosquitto/mosquitto.conf >> {$APP_PATH}/mosquitto.log & + isStart="" + while [[ "$isStart" == "" ]]; + do + echo -e ".\c" + sleep 0.5 + isStart=`ps -ef|grep 'mosquitto' |grep -v grep | awk '{print $2}'` + let n+=1 + if [ $n -gt 20 ];then + break; + fi + done + if [ "$isStart" == '' ];then + echo -e "\033[31mfailed\033[0m" + echo -e "\033[31mError: mosquitto service startup failed.\033[0m" + return; + fi + echo -e "\033[32mdone\033[0m" + else + echo "starting mosquitto...(pid $(echo $isStart)) already running" + fi } +app_stop(){ + echo -e "stopping mosquitto ... \c"; + arr=`ps aux | grep 'mosquitto' | grep -v grep | awk '{print $2}'` + for p in ${arr[@]} + do + kill -9 $p > /dev/null 2>&1 + done + echo -e "\033[32mdone\033[0m" + +} + case "$1" in start) - redis_start + app_start ;; stop) - redis_stop + app_stop ;; restart|reload) - redis_stop + app_stop sleep 0.3 - redis_start + app_start ;; *) echo "Please use start or stop as first argument" ;; esac - From f0d8f12f89f904564df41ed45de1638973851cb6 Mon Sep 17 00:00:00 2001 From: midoks Date: Fri, 29 Sep 2023 23:58:37 +0800 Subject: [PATCH 27/32] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e19aab5bf..3b3712efc 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443: * 支持rar解压。 * SSH禁止密码登陆优化。 * 防火墙支持tcp/udp模式。 +* 增加mosquitto插件。 ### JSDelivr安装地址 From 29ffc62b7c50ba9b46a8b352c38c8f84890d2c0d Mon Sep 17 00:00:00 2001 From: midoks Date: Sat, 30 Sep 2023 01:12:02 +0800 Subject: [PATCH 28/32] Update index.py --- plugins/php/index.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/php/index.py b/plugins/php/index.py index b98956443..45e960a6e 100755 --- a/plugins/php/index.py +++ b/plugins/php/index.py @@ -323,6 +323,8 @@ def phpOp(version, method): def start(version): + mw.execShell( + 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib') return phpOp(version, 'start') From f1fb16366c088e465f856e78e0dd8a09fef414c4 Mon Sep 17 00:00:00 2001 From: midoks Date: Sat, 30 Sep 2023 01:16:49 +0800 Subject: [PATCH 29/32] Update php.service.tpl --- plugins/php/init.d/php.service.tpl | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/php/init.d/php.service.tpl b/plugins/php/init.d/php.service.tpl index 0ae3fdbbc..a1fe07178 100644 --- a/plugins/php/init.d/php.service.tpl +++ b/plugins/php/init.d/php.service.tpl @@ -9,7 +9,6 @@ After=network.target [Service] Environment="LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib" -#ExecStartPre=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/www/server/lib/icu/lib PIDFile={$SERVER_PATH}/php/{$VERSION}/var/run/php-fpm.pid ExecStart={$SERVER_PATH}/php/{$VERSION}/sbin/php-fpm --nodaemonize --fpm-config {$SERVER_PATH}/php/{$VERSION}/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID From e2a491ab97ad52309793e8c47a6d8f9988ffa845 Mon Sep 17 00:00:00 2001 From: midoks Date: Sat, 30 Sep 2023 01:36:56 +0800 Subject: [PATCH 30/32] Update index.py --- plugins/redis/index.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/redis/index.py b/plugins/redis/index.py index 9145b32e6..8f30290e7 100755 --- a/plugins/redis/index.py +++ b/plugins/redis/index.py @@ -171,6 +171,18 @@ def reload(): return redisOp('reload') +def getPort(): + conf = getServerDir() + '/redis.conf' + content = mw.readFile(conf) + + rep = "^(" + 'port' + ')\s*([.0-9A-Za-z_& ~]+)' + tmp = re.search(rep, content, re.M) + if tmp: + return tmp.groups()[1] + + return '6379' + + def runInfo(): s = status() if s == 'stop': @@ -186,14 +198,18 @@ def runInfo(): requirepass = tmp.groups()[1] default_ip = '127.0.0.1' + port = getPort() # findDebian = mw.execShell('cat /etc/issue |grep Debian') # if findDebian[0] != '': # default_ip = mw.getLocalIp() - cmd = getServerDir() + "/bin/redis-cli -h " + default_ip + " info" + cmd = getServerDir() + "/bin/redis-cli -h " + \ + default_ip + ' -p ' + port + " info" + if requirepass != "": cmd = getServerDir() + '/bin/redis-cli -h ' + default_ip + \ - ' -a "' + requirepass + '" info' + ' -p ' + port + ' -a "' + requirepass + '" info' + # print(cmd) data = mw.execShell(cmd)[0] res = [ 'tcp_port', From 6e9a26c33180827cb1d68a999e6d1ed700c2df12 Mon Sep 17 00:00:00 2001 From: midoks Date: Sat, 30 Sep 2023 01:39:09 +0800 Subject: [PATCH 31/32] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3b3712efc..045068b30 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443: * SSH禁止密码登陆优化。 * 防火墙支持tcp/udp模式。 * 增加mosquitto插件。 +* redis负载状态读取优化。 ### JSDelivr安装地址 From 29d8779233037bc8c3f863b6fb72260cba9f1a7e Mon Sep 17 00:00:00 2001 From: midoks Date: Sat, 30 Sep 2023 15:21:41 +0800 Subject: [PATCH 32/32] update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 增加mosquitto插件。 * redis负载状态读取优化。 --- class/core/config_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/class/core/config_api.py b/class/core/config_api.py index 3a3a96ade..f60021c7a 100755 --- a/class/core/config_api.py +++ b/class/core/config_api.py @@ -27,7 +27,7 @@ from flask import request class config_api: - __version = '0.16.1.3' + __version = '0.16.1.5' __api_addr = 'data/api.json' def __init__(self):