update 2025-05-15 14:18:21
This commit is contained in:
parent
298db9449c
commit
bbb3464a1d
|
@ -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 <herboy2008@gmail.com>
|
||||
PKG_CONFIG_DEPENDS:=
|
||||
|
|
|
@ -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' },
|
||||
'<span class="spinning">⏳</span> ' + _('Checking status...'));
|
||||
'<span class="spinning"></span> ' + _('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';
|
||||
|
|
|
@ -9,48 +9,59 @@
|
|||
'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');
|
||||
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');
|
||||
}
|
||||
|
||||
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') {
|
||||
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();
|
||||
}
|
||||
});
|
||||
|
@ -59,8 +70,10 @@ return view.extend({
|
|||
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
|
||||
});
|
|
@ -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界面"
|
||||
|
|
Loading…
Reference in New Issue