Compare commits

...

4 commits

Author SHA1 Message Date
bgme 7727f17ed5 Merge commit '54d3a69d8f0644d08c6000a22cb4f64540a4e739' 2025-07-03 18:52:35 +00:00
bgme 54d3a69d8f Squashed 'luci-app-smartdns/' changes from 2d56f2a..416354b
416354b Add smartdns-ui optional selection for luci-app-smartdns in LuCI menu
2f35495 luci: fix missing `fs.exec_direct` method on some systems (#82)
1d80303 luci: adapt to smartdns-ui (#80)

git-subtree-dir: luci-app-smartdns
git-subtree-split: 416354bc696faf68730c10532ad24bceadfe4083
2025-07-03 18:52:35 +00:00
bgme 4839f303e6 Merge commit '9b2914f87799fc50eac8a7a45d99078925f7165f' 2025-07-03 18:52:27 +00:00
bgme 9b2914f877 Squashed 'smartdns/' changes from 2de0f3f..96fcb15
96fcb15 update makefile

git-subtree-dir: smartdns
git-subtree-split: 96fcb15a8d6c5baf72e1e57448a0c55561d39dc9
2025-07-03 18:52:27 +00:00
5 changed files with 384 additions and 295 deletions

View file

@ -4,21 +4,30 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-smartdns
PKG_VERSION:=1.2025.47.2
PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com>
PKG_VERSION:=1.2025.47.2
PKG_RELEASE:=1
LUCI_TITLE:=LuCI for smartdns
LUCI_DESCRIPTION:=Provides Luci for smartdns
LUCI_DEPENDS:=+smartdns
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+luci-base +smartdns \
+PACKAGE_$(PKG_NAME)_INCLUDE_smartdns_ui:smartdns-ui
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)/config
# shown in make menuconfig <Help>
help
$(LUCI_TITLE)
Version: $(PKG_VERSION)-$(PKG_RELEASE)
config PACKAGE_$(PKG_NAME)_INCLUDE_smartdns_ui
bool "Include smartdns-ui"
default n
endef
include $(TOPDIR)/feeds/luci/luci.mk

View file

@ -90,7 +90,7 @@ return view.extend({
var button = ev.target;
button.disabled = true;
button.textContent = _('Clear Logs...');
fs.exec_direct('/usr/libexec/smartdns-call', ['clear_log'])
fs.exec('/usr/libexec/smartdns-call', ['clear_log'])
.then(function () {
button.textContent = _('Logs cleared successfully!');
setTimeout(function () {
@ -114,9 +114,9 @@ return view.extend({
poll.add(L.bind(function () {
return fs.exec_direct('/usr/libexec/smartdns-call', ['tail'])
return fs.exec('/usr/libexec/smartdns-call', ['tail'])
.then(function (res) {
var log = E('pre', { 'wrap': 'pre' }, [res.trim() || _('Log is clean.')]);
var log = E('pre', { 'wrap': 'pre' }, [res.stdout.trim() || _('Log is clean.')]);
dom.content(log_textarea, log);
log.scrollTop = log.scrollHeight;

View file

@ -61,8 +61,16 @@ function smartdnsRenderStatus(res) {
var smartdnsEnable = uci.get_first('smartdns', 'smartdns', 'enabled');
var dnsmasqServer = uci.get_first('dhcp', 'dnsmasq', 'server');
var uiEnable = uci.get_first('smartdns', 'smartdns', 'ui') || "0";
var uiPort = uci.get_first('smartdns', 'smartdns', 'ui_port') || "6080";
if (isRunning) {
renderHTML += "<span style=\"color:green;font-weight:bold\">SmartDNS - " + _("RUNNING") + "</span>";
if (uiEnable === '1') {
var uiLink = "http://" + window.location.hostname + ":" + uiPort + "/";
renderHTML += "<a class=\"cbi-button cbi-button-action\" style=\"margin-left: 10px;\" href=\"" + uiLink + "\" target=\"_blank\">" + _("Open the WebUI") + "</a>";
}
} else {
renderHTML += "<span style=\"color:red;font-weight:bold\">SmartDNS - " + _("NOT RUNNING") + "</span>";
if (smartdnsEnable === '1') {
@ -84,17 +92,28 @@ function smartdnsRenderStatus(res) {
return renderHTML;
}
function isSmartdnsUiAvailable() {
return fs.stat('/usr/lib/libsmartdns_ui.so').then(function (res) {
return res && res.type === 'file';
}).catch(function () {
return false;
});
}
return view.extend({
load: function () {
return Promise.all([
uci.load('dhcp'),
uci.load('smartdns'),
isSmartdnsUiAvailable()
]);
},
render: function (stats) {
var m, s, o;
var ss, so;
var servers, download_files;
var hasUi = stats[2];
m = new form.Map('smartdns', _('SmartDNS'));
m.title = _("SmartDNS Server");
@ -166,6 +185,31 @@ return view.extend({
o.rmempty = false;
o.default = o.enabled;
//WebUI
if (hasUi) {
o = s.taboption("settings", form.Flag, "ui", _("Enable WebUI"), _("Enable or disable smartdns webui plugin."));
o.rmempty = false;
o.default = o.disabled;
o = s.taboption("settings", form.Value, "ui_port", _("WebUI Port"), _("WebUI server port."));
o.placeholder = 6080;
o.datatype = "port";
o.rempty = false;
o.depends('ui', '1');
o = s.taboption("settings", form.Value, "ui_data_dir", _("WebUI Data Dir"), _("Directory for storing the webui database."));
o.placeholder = "/var/lib/smartdns";
o.datatype = "string";
o.rempty = false;
o.depends('ui', '1');
o = s.taboption("settings", form.Value, "ui_log_max_age", _("WebUI Log Retention"), _("Number of days to retain webui logs."));
o.placeholder = 30;
o.datatype = "uinteger";
o.rempty = false;
o.depends('ui', '1');
}
///////////////////////////////////////
// advanced settings;
///////////////////////////////////////

File diff suppressed because it is too large Load diff

View file

@ -11,13 +11,13 @@ PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://www.github.com/pymumu/smartdns.git
PKG_SOURCE_VERSION:=d9d274c0f62c24051671798802f28c76bda2ddfa
PKG_MIRROR_HASH:=6415775cf0b109fb443d7ad46912c2dbc4f28bea423c6cca24f6a1fde9bf546d
PKG_MIRROR_HASH:=7570cff824f4dca0b350f8a42ed64f94604c46d711d803b691e6e3eeefa3f69d
PKG_SOURCE_VERSION:=130a9c06016d4aa12fede5edc94dc847c81640d7
SMARTDNS_WEBUI_VERSION:=1.0.0
SMAETDNS_WEBUI_SOURCE_PROTO:=git
SMARTDNS_WEBUI_SOURCE_URL:=https://github.com/pymumu/smartdns-webui.git
SMARTDNS_WEBUI_SOURCE_VERSION:=35cbf4a1940f5dd32670c69bd5cc02437ad073e7
SMARTDNS_WEBUI_SOURCE_VERSION:=c610c52492b3988e7cee370424013afdf0e7a00b
SMARTDNS_WEBUI_FILE:=smartdns-webui-$(SMARTDNS_WEBUI_VERSION).tar.gz
PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com>
@ -115,7 +115,7 @@ define Download/smartdns-webui
FILE:=$(SMARTDNS_WEBUI_FILE)
PROTO:=$(SMAETDNS_WEBUI_SOURCE_PROTO)
URL:=$(SMARTDNS_WEBUI_SOURCE_URL)
MIRROR_HASH:=b3f4f73b746ee169708f6504c52b33d9bbeb7c269b731bd7de4f61d0ad212d74
MIRROR_HASH:=400a0d5a9d57f24058261d5c6f64502e389e40aac36bc40f62e68dbd7cb4121a
VERSION:=$(SMARTDNS_WEBUI_SOURCE_VERSION)
HASH:=$(SMARTDNS_WEBUI_HASH)
SUBDIR:=smartdns-webui