From bbb3464a1d043caad52eb5a7b5169c06cfb2001f Mon Sep 17 00:00:00 2001 From: kenzok8 Date: Thu, 15 May 2025 14:18:21 +0800 Subject: [PATCH] update 2025-05-15 14:18:21 --- luci-app-ddns-go/Makefile | 4 +- .../resources/view/ddns-go/config.js | 43 +++++++--- .../resources/view/ddns-go/ddns-go.js | 79 +++++++++++-------- luci-app-ddns-go/po/zh_Hans/ddns-go.po | 4 +- 4 files changed, 80 insertions(+), 50 deletions(-) diff --git a/luci-app-ddns-go/Makefile b/luci-app-ddns-go/Makefile index 3731905eb..c8b732a0b 100644 --- a/luci-app-ddns-go/Makefile +++ b/luci-app-ddns-go/Makefile @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ddns-go -PKG_VERSION:=1.5.2 -PKG_RELEASE:=20250514 +PKG_VERSION:=1.5.3 +PKG_RELEASE:=20250515 PKG_MAINTAINER:=sirpdboy PKG_CONFIG_DEPENDS:= diff --git a/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js b/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js index 290f4ef2a..303c487a0 100644 --- a/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js +++ b/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/config.js @@ -7,17 +7,33 @@ 'require form'; 'require poll'; -function checkProcess() { - return fs.exec('/bin/pidof', ['ddns-go']).then(function(res) { - return { - running: res.code === 0, - pid: res.code === 0 ? res.stdout.trim() : null - }; - }).catch(function() { - return { running: false, pid: null }; - }); -} + async function checkProcess() { + // 先尝试用 pidof + try { + const pidofRes = await fs.exec('/bin/pidof', ['ddns-go']); + if (pidofRes.code === 0) { + return { + running: true, + pid: pidofRes.stdout.trim() + }; + } + } catch (err) { + // pidof 失败,继续尝试 ps + } + + // 回退到 ps + try { + const psRes = await fs.exec('/bin/ps', ['-C', 'ddns-go', '-o', 'pid=']); + const pid = psRes.stdout.trim(); + return { + running: pid !== '', + pid: pid || null + }; + } catch (err) { + return { running: false, pid: null }; + } + } function renderStatus(isRunning, listen_port, noweb) { var statusText = isRunning ? _('RUNNING') : _('NOT RUNNING'); var color = isRunning ? 'green' : 'red'; @@ -52,8 +68,8 @@ return view.extend({ render: function(data) { var m, s, o; - var listen_port = (uci.get(data[0], 'basic', 'port') || '[::]:9876').split(':').slice(-1)[0]; - var noweb = uci.get(data[0], 'basic', 'noweb') || '0'; + var listen_port = (uci.get('ddns-go', 'config', 'port') || '[::]:9876').split(':').slice(-1)[0]; + var noweb = uci.get('ddns-go', 'config', 'noweb') || '0'; m = new form.Map('ddns-go', _('DDNS-GO'), _('DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service.')); @@ -63,7 +79,7 @@ return view.extend({ s.anonymous = true; s.render = function() { var statusView = E('p', { id: 'control_status' }, - ' ' + _('Checking status...')); + ' ' + _('Checking status...')); var pollInterval = poll.add(function() { return checkProcess() @@ -122,6 +138,7 @@ return view.extend({ o = s.option(form.Flag, 'noweb', _('Do not start web services')); o.default = '0'; + o.rmempty = false; o = s.option(form.Value, 'delay', _('Delayed Start (seconds)')); o.default = '60'; diff --git a/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js b/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js index d2b79495d..951f3ec97 100644 --- a/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js +++ b/luci-app-ddns-go/htdocs/luci-static/resources/view/ddns-go/ddns-go.js @@ -9,58 +9,71 @@ 'require poll'; return view.extend({ - //handleSaveApply: null, - //handleSave: null, - //handleReset: null, load: function() { return uci.load('ddns-go'); }, + checkRunning: function() { + return fs.exec('/bin/pidof', ['ddns-go']).then(function(pidRes) { + if (pidRes.code === 0) return { isRunning: true }; + return fs.exec('/bin/ash', ['-c', 'ps | grep -q "[d]dns-go"']).then(function(grepRes) { + return { isRunning: grepRes.code === 0 }; + }); + }); + }, + render: function() { - return fs.exec('/bin/pidof', ['ddns-go']).then(function(res) { - var isRunning = res.code === 0; - var port = uci.get('ddns-go', 'basic', 'port') || '[::]:9876'; - var noweb = uci.get('ddns-go', 'basic', 'noweb') || '0'; + var self = this; + + return this.checkRunning().then(function(checkResult) { + var isRunning = checkResult.isRunning; + var port = uci.get('ddns-go', 'config', 'port') || '[::]:9876'; + var noweb = uci.get('ddns-go', 'config', 'noweb') ; port = port.split(':').pop(); var container = E('div'); - - var status = E('div', { style: 'text-align: center; padding: 2em;' }, [ - E('img', { - src: 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMTAyNCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+PHBhdGggZmlsbD0iI2RmMDAwMCIgZD0iTTk0Mi40MjEgMjM0LjYyNGw4MC44MTEtODAuODExLTE1My4wNDUtMTUzLjA0NS04MC44MTEgODAuODExYy03OS45NTctNTEuNjI3LTE3NS4xNDctODEuNTc5LTI3Ny4zNzYtODEuNTc5LTI4Mi43NTIgMC01MTIgMjI5LjI0OC01MTIgNTEyIDAgMTAyLjIyOSAyOS45NTIgMTk3LjQxOSA4MS41NzkgMjc3LjM3NmwtODAuODExIDgwLjgxMSAxNTMuMDQ1IDE1My4wNDUgODAuODExLTgwLjgxMWM3OS45NTcgNTEuNjI3IDE3NS4xNDcgODEuNTc5IDI3Ny4zNzYgODEuNTc5IDI4Mi43NTIgMCA1MTItMjI5LjI0OCA1MTItNTEyIDAtMTAyLjIyOS0yOS45NTItMTk3LjQxOS04MS41NzktMjc3LjM3NnpNMTk0Ljk0NCA1MTJjMC0xNzUuMTA0IDE0MS45NTItMzE3LjA1NiAzMTcuMDU2LTMxNy4wNTYgNDggMCA5My40ODMgMTAuNjY3IDEzNC4yMjkgMjkuNzgxbC00MjEuNTQ3IDQyMS41NDdjLTE5LjA3Mi00MC43ODktMjkuNzM5LTg2LjI3Mi0yOS43MzktMTM0LjI3MnpNNTEyIDgyOS4wNTZjLTQ4IDAtOTMuNDgzLTEwLjY2Ny0xMzQuMjI5LTI5Ljc4MWw0MjEuNTQ3LTQyMS41NDdjMTkuMDcyIDQwLjc4OSAyOS43ODEgODYuMjcyIDI5Ljc4MSAxMzQuMjI5LTAuMDQzIDE3NS4xNDctMTQxLjk5NSAzMTcuMDk5LTMxNy4wOTkgMzE3LjA5OXoiLz48L3N2Zz4=', - style: 'width: 100px; height: 100px; margin-bottom: 1em;' - }), - E('h2', {}, _('DDNS-GO Service Not Running')), - E('p', {}, _('Please enable the DDNS-GO service')) - ]); - - - if (isRunning && noweb !== '1') { + console.log('Debug: isRunning=' + isRunning + ', noweb=' + noweb + ', port=' + port); + if (!isRunning || noweb === '1') { + if (!isRunning) { + var message = _('DDNS-GO Service Not Running'); + } + if (noweb === '1') { + var message = _('DDNS-GO Web Interface Disabled'); + } + + container.appendChild(E('div', { + style: 'text-align: center; padding: 2em;' + }, [ + E('img', { + src: 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMTAyNCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCI+PHBhdGggZmlsbD0iI2RmMDAwMCIgZD0iTTk0Mi40MjEgMjM0LjYyNGw4MC44MTEtODAuODExLTE1My4wNDUtMTUzLjA0NS04MC44MTEgODAuODExYy03OS45NTctNTEuNjI3LTE3NS4xNDctODEuNTc5LTI3Ny4zNzYtODEuNTc5LTI4Mi43NTIgMC01MTIgMjI5LjI0OC01MTIgNTEyIDAgMTAyLjIyOSAyOS45NTIgMTk3LjQxOSA4MS41NzkgMjc3LjM3NmwtODAuODExIDgwLjgxMSAxNTMuMDQ1IDE1My4wNDUgODAuODExLTgwLjgxMWM3OS45NTcgNTEuNjI3IDE3NS4xNDcgODEuNTc5IDI3Ny4zNzYgODEuNTc5IDI4Mi43NTIgMCA1MTItMjI5LjI0OCA1MTItNTEyIDAtMTAyLjIyOS0yOS45NTItMTk3LjQxOS04MS41NzktMjc3LjM3NnpNMTk0Ljk0NCA1MTJjMC0xNzUuMTA0IDE0MS45NTItMzE3LjA1NiAzMTcuMDU2LTMxNy4wNTYgNDggMCA5My40ODMgMTAuNjY3IDEzNC4yMjkgMjkuNzgxbC00MjEuNTQ3IDQyMS41NDdjLTE5LjA3Mi00MC43ODktMjkuNzM5LTg2LjI3Mi0yOS43MzktMTM0LjI3MnpNNTEyIDgyOS4wNTZjLTQ4IDAtOTMuNDgzLTEwLjY2Ny0xMzQuMjI5LTI5Ljc4MWw0MjEuNTQ3LTQyMS41NDdjMTkuMDcyIDQwLjc4OSAyOS43ODEgODYuMjcyIDI5Ljc4MSAxMzQuMjI5LTAuMDQzIDE3NS4xNDctMTQxLjk5NSAzMTcuMDk5LTMxNy4wOTkgMzE3LjA5OXoiLz48L3N2Zz4=', + style: 'width: 100px; height: 100px; margin-bottom: 1em;' + }), + E('h2', {}, message) + ])); + } else { var iframe = E('iframe', { - src: window.location.origin + ':' + port, - style: 'width: 100%; min-height: 100vh; border: none; border-radius: 3px;' + src: window.location.protocol + '//' + window.location.hostname + ':' + port, + style: 'width: 100%; min-height: 100vh; border: none;' }); container.appendChild(iframe); - } else - { - container.appendChild(status); - } + } - // Add polling to refresh status poll.add(function() { - return fs.exec('/bin/pidof', ['ddns-go']).then(function(res) { - var newIsRunning = res.code === 0; - if (newIsRunning !== isRunning) { + return self.checkRunning().then(function(checkResult) { + var newStatus = checkResult.isRunning; + if (newStatus !== isRunning) { window.location.reload(); } }); }, 5); poll.start(); - + return container; - }).catch(function(err) { - return E('div', { class: 'error' }, _('Error checking DDNS-Go status: ') + err.message); }); - } + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null }); \ No newline at end of file diff --git a/luci-app-ddns-go/po/zh_Hans/ddns-go.po b/luci-app-ddns-go/po/zh_Hans/ddns-go.po index ece31efda..2c2183ac4 100644 --- a/luci-app-ddns-go/po/zh_Hans/ddns-go.po +++ b/luci-app-ddns-go/po/zh_Hans/ddns-go.po @@ -43,8 +43,8 @@ msgstr "运行中" msgid "DDNS-GO Service Not Running" msgstr "DDNS-GO服务未启用" -msgid "Please enable the DDNS-GO service" -msgstr "请将DDNS-GO服务启用" +msgid "DDNS-GO Web Interface Disabled" +msgstr "DDNS-GO WEB服务禁用" msgid "Open Web Interface" msgstr "打开Web界面"