From 89dce42a0ced481868a03ee46cd8a14e19fde359 Mon Sep 17 00:00:00 2001 From: actions-user Date: Sat, 25 Oct 2025 02:25:22 +0800 Subject: [PATCH] update 2025-10-25 02:25:22 --- luci-app-ddns-go/Makefile | 9 +- .../resources/view/ddns-go/config.js | 311 ++++++++++++++---- luci-app-ddns-go/po/templates/ddns-go.pot | 32 +- luci-app-ddns-go/po/zh_Hans/ddns-go.po | 50 ++- .../share/rpcd/acl.d/luci-app-ddns-go.json | 34 +- luci-theme-kucat/Makefile | 4 +- .../htdocs/luci-static/kucat/css/style.css | 233 ++++++------- 7 files changed, 483 insertions(+), 190 deletions(-) diff --git a/luci-app-ddns-go/Makefile b/luci-app-ddns-go/Makefile index f39538b6..64664c8c 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.4 -PKG_RELEASE:=20250601 +PKG_VERSION:=1.6.2 +PKG_RELEASE:=20251024 PKG_MAINTAINER:=sirpdboy PKG_CONFIG_DEPENDS:= @@ -17,11 +17,6 @@ LUCI_TITLE:=LuCI Support for Dynamic ddns-go Client LUCI_DEPENDS:=+ddns-go LUCI_PKGARCH:=all -define Package/$(PKG_NAME)/conffiles -/etc/config/ddns-go -/etc/ddns-go/ddns-go-config.yaml -endef - include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature 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 5e529236..112d710c 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 @@ -6,9 +6,21 @@ 'require uci'; 'require form'; 'require poll'; +'require rpc'; +const getDDNSGoInfo = rpc.declare({ + object: 'luci.ddns-go', + method: 'get_ver', + expect: { 'ver': {} } +}); - async function checkProcess() { +const getUpdateInfo = rpc.declare({ + object: 'luci.ddns-go', + method: 'last_update', + expect: { 'update': {} } +}); + +async function checkProcess() { // 先尝试用 pidof try { const pidofRes = await fs.exec('/bin/pidof', ['ddns-go']); @@ -21,8 +33,6 @@ } catch (err) { // pidof 失败,继续尝试 ps } - - // 回退到 ps try { const psRes = await fs.exec('/bin/ps', ['-C', 'ddns-go', '-o', 'pid=']); const pid = psRes.stdout.trim(); @@ -33,29 +43,70 @@ } catch (err) { return { running: false, pid: null }; } - } -function renderStatus(isRunning, listen_port, noweb) { +} + +function getVersionInfo() { + return L.resolveDefault(getDDNSGoInfo(), {}).then(function(result) { + //console.log('getVersionInfo result:', result); + return result || {}; + }).catch(function(error) { + console.error('Failed to get version:', error); + return {}; + }); +} + +function checkUpdateStatus() { + return L.resolveDefault(getUpdateInfo(), {}).then(function(result) { + //console.log('checkUpdateStatus result:', result); + return result || {}; + }).catch(function(error) { + console.error('Failed to get update info:', error); + return {}; + }); +} + +function renderStatus(isRunning, listen_port, noweb, version) { var statusText = isRunning ? _('RUNNING') : _('NOT RUNNING'); var color = isRunning ? 'green' : 'red'; var icon = isRunning ? '✓' : '✗'; + var versionText = version ? `v${version}` : ''; + var html = String.format( - '%s %s %s', - color, icon, _('DDNS-Go'), statusText + '%s %s %s - %s', + color, icon, _('DDNS-Go'), versionText, statusText ); - if (isRunning && res.pid) { - html += ' (PID: ' + res.pid + ')'; + if (isRunning) { + html += String.format(' %s', + window.location.protocol, window.location.hostname, listen_port, _('Open Web Interface')); } - if (isRunning && noweb !== '1') { - const baseUrl = `${window.location.protocol}//${window.location.hostname}`; - const fullUrl = `${baseUrl}:${listen_port}`; - html += String.format(' %s', fullUrl, _('Open Web Interface')); - } - return html; } +function renderUpdateStatus(updateInfo) { + if (!updateInfo || !updateInfo.status) { + return ' ⚠ ' + _('Update status unknown') + ''; + } + + var status = updateInfo.status; + var message = updateInfo.message || ''; + + switch(status) { + case 'updated': + return String.format('✓ %s', message); + case 'update_available': + return String.format('↻ %s', message); + case 'latest': + return String.format('✓ %s', message); + case 'download_failed': + case 'check_failed': + return String.format('✗ %s', message); + default: + return String.format('? %s', message); + } +} + return view.extend({ load: function() { return Promise.all([ @@ -63,6 +114,118 @@ return view.extend({ ]); }, + handleResetPassword: async function () { + try { + ui.showModal(_('Resetting Password'), [ + E('p', { 'class': 'spinning' }, _('Resetting admin password, please wait...')) + ]); + + const result = await fs.exec('/usr/bin/ddns-go', ['-resetPassword', 'admin12345', '-c', '/etc/ddns-go/ddns-go-config.yaml']); + + ui.hideModal(); + + const output = (result.stdout + result.stderr).trim(); + + let success = false; + let message = ''; + + if (result.code === 0) { + + + message = _('Password reset successfully to admin12345'); + + ui.showModal(_('Password Reset Successful'), [ + E('p', _('Admin password has been reset to: admin12345')), + E('p', _('You need to restart DDNS-Go service for the changes to take effect.')), + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'btn cbi-button cbi-button-positive', + 'click': ui.createHandlerFn(this, function() { + ui.hideModal(); + this.handleRestartService(); + }) + }, _('Restart Service Now')), + ' ', + E('button', { + 'class': 'btn cbi-button cbi-button-neutral', + 'click': ui.hideModal + }, _('Restart Later')) + ]) + ]); + } else { + alert(_('Reset may have failed:') + '\n' + output); + } + + } catch (error) { + ui.hideModal(); + console.error('Reset password failed:', error); + alert(_('ERROR:') + '\n' + _('Reset password failed:') + '\n' + error.message); + } + }, + + handleRestartService: async function() { + try { + await fs.exec('/etc/init.d/ddns-go', ['stop']); + await new Promise(resolve => setTimeout(resolve, 1000)); + await fs.exec('/etc/init.d/ddns-go', ['start']); + + alert(_('SUCCESS:') + '\n' + _('DDNS-Go service restarted successfully')); + if (window.statusPoll) { + window.statusPoll(); + } + } catch (error) { + alert(_('ERROR:') + '\n' + _('Failed to restart service:') + '\n' + error.message); + } + }, + + + handleUpdate: async function () { + try { + var updateView = document.getElementById('update_status'); + if (updateView) { + updateView.innerHTML = ' ' + _('Updating, please wait...'); + } + const updateInfo = await checkUpdateStatus(); + if (updateView) { + updateView.innerHTML = renderUpdateStatus(updateInfo); + } + + if (updateInfo.update_successful || updateInfo.status === 'updated') { + if (window.statusPoll) { + window.statusPoll(); + } + + // 3秒后恢复显示版本信息 + setTimeout(() => { + var updateView = document.getElementById('update_status'); + if (updateView) { + getVersionInfo().then(function(versionInfo) { + var version = versionInfo.version || ''; + updateView.innerHTML = String.format('✓ %s v%s', + _('Current Version:'), version); + }); + } + }, 3000); + } + + } catch (error) { + console.error('Update failed:', error); + var updateView = document.getElementById('update_status'); + if (updateView) { + updateView.innerHTML = '✗ ' + _('Update failed') + ''; + + // 5秒后恢复显示版本信息 + setTimeout(() => { + getVersionInfo().then(function(versionInfo) { + var version = versionInfo.version || ''; + updateView.innerHTML = String.format('%s v%s', + _('Current Version:'), version); + }); + }, 5000); + } + } + }, + render: function(data) { var m, s, o; var listen_port = (uci.get('ddns-go', 'config', 'port') || '[::]:9876').split(':').slice(-1)[0]; @@ -74,20 +237,27 @@ return view.extend({ // 状态显示部分 s = m.section(form.TypedSection); s.anonymous = true; + s.render = function() { var statusView = E('p', { id: 'control_status' }, ' ' + _('Checking status...')); - var pollInterval = poll.add(function() { - return checkProcess() - .then(function(res) { - statusView.innerHTML = renderStatus(res.running, listen_port, noweb); - }) - .catch(function(err) { - console.error('Status check failed:', err); - statusView.innerHTML = '⚠ ' + _('Status check error') + ''; - }); - }, 5); // 每5秒检查一次 + + window.statusPoll = function() { + return Promise.all([ + checkProcess(), + getVersionInfo() + ]).then(function(results) { + var [processInfo, versionInfo] = results; + var version = versionInfo.version || ''; + statusView.innerHTML = renderStatus(processInfo.running, listen_port, noweb, version); + }).catch(function(err) { + console.error('Status check failed:', err); + statusView.innerHTML = '⚠ ' + _('Status check error') + ''; + }); + }; + + var pollInterval = poll.add(window.statusPoll, 5); // 每5秒检查一次 return E('div', { class: 'cbi-section', id: 'status_bar' }, [ statusView, @@ -102,44 +272,73 @@ return view.extend({ ]) ]) ]); - } + }; + s = m.section(form.NamedSection, 'config', 'basic'); - s = m.section(form.NamedSection, 'config', 'basic'); + o = s.option(form.Flag, 'enabled', _('Enable')); + o.default = o.disabled; + o.rmempty = false; - o = s.option(form.Flag, 'enabled', _('Enable')); - o.default = o.disabled; - o.rmempty = false; + o = s.option(form.Value, 'port', _('Listen port')); + o.default = '[::]:9876'; + o.rmempty = false; - o = s.option(form.Value, 'port', _('Listen port')); - o.default = '[::]:9876'; - o.rmempty = false; + o = s.option(form.Value, 'time', _('Update interval')); + o.default = '300'; - o = s.option(form.Value, 'time', _('Update interval')); - o.default = '300'; + o = s.option(form.Value, 'ctimes', _('Compare with service provider N times intervals')); + o.default = '5'; - o = s.option(form.Value, 'ctimes', _('Compare with service provider N times intervals')); - o.default = '5'; + o = s.option(form.Value, 'skipverify', _('Skip verifying certificates')); + o.default = '0'; - o = s.option(form.Value, 'skipverify', _('Skip verifying certificates')); - o.default = '0'; + o = s.option(form.Value, 'dns', _('Specify DNS resolution server')); + o.value('223.5.5.5', _('Ali DNS 223.5.5.5')); + o.value('223.6.6.6', _('Ali DNS 223.6.6.6')); + o.value('119.29.29.29', _('Tencent DNS 119.29.29.29')); + o.value('1.1.1.1', _('CloudFlare DNS 1.1.1.1')); + o.value('8.8.8.8', _('Google DNS 8.8.8.8')); + o.value('8.8.4.4', _('Google DNS 8.8.4.4')); + o.datatype = 'ipaddr'; - o = s.option(form.Value, 'dns', _('Specify DNS resolution server')); - o.value('223.5.5.5', _('Ali DNS 223.5.5.5')); - o.value('223.6.6.6', _('Ali DNS 223.6.6.6')); - o.value('119.29.29.29', _('Tencent DNS 119.29.29.29')); - o.value('1.1.1.1', _('CloudFlare DNS 1.1.1.1')); - o.value('8.8.8.8', _('Google DNS 8.8.8.8')); - o.value('8.8.4.4', _('Google DNS 8.8.4.4')); - o.datatype = 'ipaddr'; + o = s.option(form.Flag, 'noweb', _('Do not start web services')); + o.default = '0'; + o.rmempty = false; - 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'; + + o = s.option(form.Button, '_newpassword', _('Reset account password')); + o.inputtitle = _('ResetPassword'); + o.inputstyle = 'apply'; + o.onclick = L.bind(this.handleResetPassword, this, data); + + o = s.option(form.DummyValue, '_update_status', _('Current Version')); + o.rawhtml = true; + var currentVersion = ''; + + getVersionInfo().then(function(versionInfo) { + currentVersion = versionInfo.version || ''; + var updateView = document.getElementById('update_status'); + if (updateView) { + updateView.innerHTML = String.format('v%s', currentVersion); + } + }); + + o.cfgvalue = function() { + return E('div', { style: 'margin: 5px 0;' }, [ + E('span', { id: 'update_status' }, + currentVersion ? String.format('v%s', currentVersion) : _('Loading...')) + ]); + }; - o = s.option(form.Value, 'delay', _('Delayed Start (seconds)')); - o.default = '60'; - - return m.render(); - } -}); + o = s.option(form.Button, '_update', _('Update kernel'), + _('Check and update DDNS-Go to the latest version')); + o.inputtitle = _('Check Update'); + o.inputstyle = 'apply'; + o.onclick = L.bind(this.handleUpdate, this, data); + + return m.render(); + } +}); \ No newline at end of file diff --git a/luci-app-ddns-go/po/templates/ddns-go.pot b/luci-app-ddns-go/po/templates/ddns-go.pot index afee16a6..ccbab915 100644 --- a/luci-app-ddns-go/po/templates/ddns-go.pot +++ b/luci-app-ddns-go/po/templates/ddns-go.pot @@ -43,7 +43,7 @@ msgstr "" msgid "DDNS-GO Service Not Running" msgstr "" -msgid "Please enable the DDNS-GO service" +msgid "DDNS-GO Web Interface Disabled" msgstr "" msgid "Open Web Interface" @@ -72,3 +72,33 @@ msgstr "" msgid "Delayed Start (seconds)" msgstr "" + +msgid "Update Program" +msgstr "" + +msgid "Check and update DDNS-Go to the latest version" +msgstr "" + +msgid "Check Update" +msgstr "" + +msgid "Updating, please wait..." +msgstr "" + +msgid "Update failed" +msgstr "" + +msgid "Update status unknown" +msgstr "" + +msgid "Reset account password" +msgstr "" + +msgid "ResetPassword" +msgstr "" + +msgid "SUCCESS:" +msgstr "" + +msgid "Reset admin password successfully to admin12345" +msgstr "" \ 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 2c2183ac..ab61b543 100644 --- a/luci-app-ddns-go/po/zh_Hans/ddns-go.po +++ b/luci-app-ddns-go/po/zh_Hans/ddns-go.po @@ -20,7 +20,7 @@ msgid "DDNS-GO Control panel" msgstr "DDNS-GO操作台" msgid "Open Web Interface" -msgstr "打开 Web 界面" +msgstr "打开Web界面" msgid "Log" msgstr "日志" @@ -72,3 +72,51 @@ msgstr "不启动web服务" msgid "Delayed Start (seconds)" msgstr "开机延时启动(秒)" + +msgid "Update kernel" +msgstr "更新内核" + +msgid "Check and update DDNS-Go to the latest version" +msgstr "更新DDNS-Go到最新版本" + +msgid "Check Update" +msgstr "检查更新" + +msgid "Updating, please wait..." +msgstr "更新中,请稍等..." + +msgid "Update failed" +msgstr "更新失败" + +msgid "Update status unknown" +msgstr "更新状态未知" + +msgid "Reset account password" +msgstr "重置登录密码" + +msgid "ResetPassword" +msgstr "重置密码" + +msgid "SUCCESS:" +msgstr "完成执行:" + +msgid "Password reset successfully to admin12345" +msgstr "成功重置密码admin12345" + +msgid "Password Reset Successful" +msgstr "重置密码成功" + +msgid "User password has been reset to: admin12345" +msgstr "用户密码重置为admin12345" + +msgid "You need to restart DDNS-Go service for the changes to take effect." +msgstr "需要重启DDNS-GO服务更改才生效" + +msgid "Restart Service Now" +msgstr "立刻重启服务" + +msgid "Restart Later" +msgstr "稍后重启" + +msgid "" +msgstr "" diff --git a/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json b/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json index 86aab923..38e4cd59 100644 --- a/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json +++ b/luci-app-ddns-go/root/usr/share/rpcd/acl.d/luci-app-ddns-go.json @@ -1,8 +1,9 @@ { - "luci-app-ddns-go": { + "luci-app-ddns-go": { "description": "Grant UCI access for luci-app-ddns-go", - "read": { - "file": { + "read": { + "uci": [ "ddns-go" ], + "file": { "/etc/init.d/ddns-go": [ "exec" ], "/usr/libexec/ddns-go-call": [ "exec" ], "/bin/pidof": [ "exec" ], @@ -10,14 +11,21 @@ "/bin/ash": [ "exec" ], "/etc/ddns-go/ddns-go-config.yaml": [ "read" ], "/var/log/ddns-go.log": [ "read" ] - }, - "ubus": { - "service": [ "list" ] - }, - "uci": [ "ddns-go" ,"ddns-go" ] - }, - "write": { - "uci": [ "ddns-go" ,"ddns-go" ] - } - } + }, + "ubus": { + "rc": [ "*" ], + "service": ["list"], + "luci.ddns-go": [ "*" ] + } + }, + "write": { + "ubus": { + "luci.ddns-go": [ "*" ] + }, + "file": { + "/etc/ddns-go/ddns-go-config.yaml": ["write"] + }, + "uci": ["ddns-go"] + } + } } diff --git a/luci-theme-kucat/Makefile b/luci-theme-kucat/Makefile index 04ce3aa0..75dd19ab 100644 --- a/luci-theme-kucat/Makefile +++ b/luci-theme-kucat/Makefile @@ -10,8 +10,8 @@ THEME_TITLE:=Kucat Theme PKG_NAME:=luci-theme-$(THEME_NAME) LUCI_TITLE:=Kucat Theme by sirpdboy LUCI_DEPENDS:= -PKG_VERSION:=2.6.18 -PKG_RELEASE:=20251018 +PKG_VERSION:=2.7.2 +PKG_RELEASE:=20251022 define Package/luci-theme-$(THEME_NAME)/conffiles /www/luci-static/resources/background/ diff --git a/luci-theme-kucat/htdocs/luci-static/kucat/css/style.css b/luci-theme-kucat/htdocs/luci-static/kucat/css/style.css index bf97257a..23dff0fe 100644 --- a/luci-theme-kucat/htdocs/luci-static/kucat/css/style.css +++ b/luci-theme-kucat/htdocs/luci-static/kucat/css/style.css @@ -474,12 +474,12 @@ -moz-border-radius: var(--radius0); border-radius: var(--radius0); background-clip: content-box; - background: rgba(50,50,50,0.9); - border: 1px solid rgba(var(--primary-rgbm),1) + background: rgba(var(--primary-rgbbody), 0.9); + border: 1px solid rgba(var(--primary-rgbm), 0.6); } ::-webkit-scrollbar-thumb:hover { - background-color: rgba(var(--primary-rgbm),1) + background-color: rgba(var(--primary-rgbm),0.9) } ::selection { @@ -1433,7 +1433,7 @@ h4 { padding: 0.75rem 1.25rem; font-weight: 600; font-size: var(--font-z); - color: var(--primary-title-color); + color: var(--primary-title-color) !important; padding-bottom: 10px } @@ -1869,7 +1869,8 @@ button:hover,.btn:hover,.cbi-button:hover { border-left: 0.18751rem solid var(--menu-item-titlebg-color) !important; border-right: 0.18751rem solid var(--menu-item-titlebg-color) !important; border-radius: var(--radius2); - padding: 0.5rem 0rem; + padding: 0.5rem 0.2rem; + line-height: 1.5; box-shadow: 0 0.5rem 1rem var(--input-boxcolor); background: var(--menu-item-titlebg-color); margin: 0.2rem 0rem 0.2rem 0.4rem !important @@ -1954,7 +1955,7 @@ button:hover,.btn:hover,.cbi-button:hover { .cbi-value { display: inline-block; width: 100%; - padding: 0 0.3rem; + padding: 0.1rem 0.3rem; line-height: 2.3rem } @@ -3861,7 +3862,9 @@ body.lang_pl.node-main-login .cbi-value-title { .chat_window>.mainContent>.top_menu { background-color: rgba(var(--primary-rgbm), 0.12)!important } - +.showVoiceCls, .showVoiceCls .markdown-body { + background: var(--inputbg-color) !important; +} #chatlog .response { background-color: rgba(255,255,255,0.2) !important } @@ -4009,12 +4012,14 @@ pre.command-output { border-bottom-color: #dee2e6 } +/* openclash */ [data-page^="admin-services-openclash"] .cbi-tabmenu>li:last-child { margin-right: 0 !important } + [data-page^="admin-services-openclash"] .select-popup-header, [data-page^="admin-services-openclash"] .oc, -[data-page^="admin-services-openclash"] .oc .main-cards-container { +.oc .main-cards-container { background-color: rgba(255,255,255,0) !important; } @@ -4026,40 +4031,40 @@ pre.command-output { background-color: rgba(255,255,255,0) !important; padding: 0 20px 0 10px!important; } + [data-page^="admin-services-openclash"] .oc .version-display, [data-page^="admin-services-openclash"] .oc .value-indicator, [data-page^="admin-services-openclash"] .oc .cbi-button-group{ -border: 0px solid rgba(255,255,255,0.3) !important; - /* background-color: var(--input-bgcolor) !important; */ -} -[data-page^="admin-services-openclash"] .oc .myip-ip-item, .oc .myip-check-item { - background-color: rgba(255,255,255,0.1) !important; - background-color: rgba(var(--primary-rgbbody),0.2) !important; - border: 1px solid rgba(255, 255, 255, 0.15) !important; - border: 1px solid rgba(var(--primary-rgbm),0.1) !important; +border: 0px solid #ddd !important; } -[data-page^="admin-services-openclash"] .oc .developer-container, -[data-page^="admin-services-openclash"] .oc .myip-main-card, -[data-page^="admin-services-openclash"] .oc .sub-card { - background-color: rgba(255,255,255,0.1) !important; - background-color: rgba(var(--primary-rgbm),0.2) !important; - border: 1px solid rgba(255,255,255,0.15) !important; - border: 1px solid rgba(var(--primary-rgbm),0.1) !important; +[data-page^="admin-services-openclash"] .oc .myip-ip-item, +[data-page^="admin-services-openclash"] .oc .myip-check-item, +[data-page^="admin-services-openclash"] .oc .developer-container, +[data-page^="admin-services-openclash"] .oc .sub-card { + background-color: rgba(var(--primary-rgbm),0.02) !important; + border: 1px solid rgba(var(--primary-rgbm),0.2) ; } -[data-page^="admin-services-openclash"] .oc .main-card { - background-color: rgba(255,255,255,0) !important; - border: 1px solid rgba(255,255,255,0.15) !important; - border: 1px solid rgba(var(--primary-rgbm),0.1) !important; +[data-page^="admin-services-openclash"] .oc>div>div, +[data-page^="admin-services-openclash"] .oc .myip-main-card, +[data-page^="admin-services-openclash"] .oc .myip-content-grid, +[data-page^="admin-services-openclash"] .oc .main-card, +[data-page^="admin-services-openclash"] .oc .announcement-card + { + background-color: rgba(255, 255, 255, 0) !important; + border: 0px solid #ddd !important; + box-shadow: none !important; } -[data-page^="admin-services-openclash"] .oc .ip-result,.oc .ip-geo, -[data-page^="admin-services-openclash"] .oc .ip-title, .oc .ip-state_title, -[data-page^="admin-services-openclash"] .oc .myip-section-title, -[data-page^="admin-services-openclash"] .oc .card-title + +[data-page^="admin-services-openclash"] .oc .ip-result,.oc .ip-geo, +[data-page^="admin-services-openclash"] .oc .ip-title, .oc .ip-state_title, +[data-page^="admin-services-openclash"] .oc .myip-section-title, +.oc .card-title { color: var(--primary-title-color)!important; + border: 0px solid #ddd !important; } #tool_label .tool_label_span { @@ -4150,63 +4155,67 @@ border: 0px solid rgba(255,255,255,0.3) !important; } /* bandix */ +.bandix-connection-container, .bandix-container { padding: 5px!important; background-color: rgba(255,255,255,0) !important; color: var(--primary-title-color)!important; } -.bandix-container .bandix-badge +.bandix-badge { color: var(--primary-title-color)!important; background-color: var(--inputbg-color)!important; - border: 1px solid var(--input-boxcolor); + border: 1px solid var(--input-boxcolor)!important; } -.bandix-container .action-button { - background-color: rgba(var(--primary-rgbm), 0.9); +.action-button { + background-color: rgba(var(--primary-rgbm), 0.9)!important; } -.bandix-container .history-tooltip>div, -.bandix-container .history-tooltip>div>span, + +.stats-card-title , +.stats-card>div , +.history-tooltip>div, +.history-tooltip>div>span, .bandix-container .form-label , -.bandix-container .bandix-card-title, -.bandix-container .bandix-card>div, -.bandix-container .stats-title, -.bandix-container .bandix-title { - color: var(--primary-title-color); +.bandix-card-title, +.bandix-card>div, +.stats-title, +.bandix-title { + color: var(--primary-title-color)!important; +} +.bandix-card-body { + padding: 0!important; +} +.history-tooltip +{ + background-color: rgba(var(--primary-rgbbody),1)!important; + color: var(--body-color) !important; + border: 1px solid var(--input-boxcolor)!important; + width: 300px!important; } -.bandix-container .history-tooltip +.bandix-card , +.stats-card { - background-color: rgba(var(--primary-rgbbody),1) ; - color: var(--body-color) ; - border: 1px solid var(--input-boxcolor); - width: 300px; + background-color: rgba(var(--primary-rgbm), 0.1)!important; + border-radius: 0 !important; + box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) !important; + margin-bottom: 0 !important; + border: 0px solid #333!important; + border-bottom: 0px solid var(--input-boxcolor)!important; + overflow: auto!important; } -.bandix-container .bandix-card , -.bandix-container .stats-card +.bandix-card .bandix-card-header.history-header { - background-color: rgba(var(--primary-rgbm), 0.1); - background-color: rgba(0, 0, 0, 0) ; - border-radius: 0 ; - box-shadow: 0 0 0 0 rgba(0, 0, 0, 0) ; - margin-bottom: 0 ; - border: 0px solid #3333331c; - border-bottom: 1px solid var(--input-boxcolor); - overflow: auto; -} - -.bandix-container .bandix-card .bandix-card-header.history-header -{ - border-bottom: 1px solid var(--input-boxcolor); - background-color: rgba(0, 0, 0, 0) ; - padding: 0; + border-bottom: 1px solid var(--input-boxcolor)!important; + background-color: rgba(0, 0, 0, 0) !important; } .modal-header, .device-summary, -.bandix-container .bandix-card .history-controls +.bandix-card .history-controls { border: 0px solid var(--input-boxcolor)!important; @@ -4220,18 +4229,19 @@ border: 0px solid rgba(255,255,255,0.3) !important; .device-summary>div, .bandix-container .device-name, .bandix-container .legend-item, -.stats-card>div>div>span, -.bandix-container .bandix-container .stats-card>div>div>span { +.stats-card>div>div>span{ color: var(--primary-title-color)!important; } -.bandix-container .bandix-table + +.bandix-table { - table-layout: auto; + table-layout: auto!important; } -.bandix-container .bandix-table td ,.bandix-table th +.bandix-table td ,.bandix-table th { -padding: 10px 15px; +padding: 10px 15px!important; +border-bottom: 0px solid #f1f5f9!important; } .form-input @@ -4254,19 +4264,9 @@ padding: 10px 15px; background-color: rgba(255, 255, 255, 0) !important; color: var(--body-color) !important; + border-top: 1px solid var(--inputborder-color)!important; } -.bandix-table tbody tr:nth-child(odd) -{ - background-color: rgba(0,0,0,0.1) !important; -} - -.bandix-table tbody tr:nth-child(even) -{ - background-color: rgba(0, 0, 0, 0.04) !important; -} - - [data-page="admin-services-adguardhome"]>.main .cbi-value .cbi-input-textarea { width: 100% !important; box-shadow: 0 0 1px var(--input-boxcolor) !important @@ -4324,7 +4324,6 @@ select,input,.cbi-dropdown,.btn,button,.cbi-button,.item::after { #cbi-appfilter>div>div { overflow: auto; - /* background-color: rgba(var(--primary-rgbbody),1) !important */ } #cbi-appfilter>div>div>button { @@ -4334,42 +4333,29 @@ select,input,.cbi-dropdown,.btn,button,.cbi-button,.item::after { height: auto !important } -#cbi-appfilter>div>div>ul { - border-bottom: 0px solid #ccc !important -} - -#cbi-appfilter>div>div>ul>li { - background-color: rgba(var(--primary-rgbm),0.2) !important -} - -#cbi-appfilter>div>div>ul>li.active { - background-color: rgba(var(--primary-rgbm),0.7) !important; - color: var(--menu-hover-color) !important -} #cbi-appfilter>div>div>ul>li:hover { background-color: rgba(var(--primary-rgbm),0.7) !important; color: var(--menu-hover-color) !important } -#cbi-appfilter #detailsModal .tab-body { - overflow: auto; - background-color: rgba(248,248,248,0.9) !important -} - -#cbi-appfilter>div>div span { - /* color: var(--body-color) !important*/ -} - -#cbi-appfilter>div>div input { - /* background-color: rgba(248,248,248,0.2) !important; - color: var(--body-color) !important*/ -} #cbi-appfilter #user_status_table th.th:nth-child(1) { width: 150px !important; } +.oaf-container>div{ + background: rgba(0, 0, 0, 0.04) !important; + color: var(--body-color) !important; + border-bottom: 0px solid #ddd!important; +} + +.traffic-info>div>span, +.device-details>div, +.oaf-container>div span{ + color: var(--body-color)!important; +} + .CodeMirror.cm-s-dracula.CodeMirror-wrap { border-radius: 0.375rem } @@ -4980,8 +4966,35 @@ div#file-manager-container #status-bar #status-info { [data-page="admin-network-dhcp"] [data-tab-active="true"] { padding: 0 !important } - - + .cbi-value:first-child { + padding-top: 0 + } + .cbi-value { + padding: 0; + line-height: 2rem; + } + .history-card-body { + padding: 0 !important + } + /* Bandix */ + .stats-detail-row>span { + display: none!important + } + .bandix-card .bandix-card-header.history-header { + padding: 0 !important; + } + + .main-right, + .main-left{ + scrollbar-width: none; + -ms-overflow-style: none; + } + + .main-right::-webkit-scrollbar, + .main-left::-webkit-scrollbar + { + display: none; + } #file-manager-container .file-manager-header { flex-wrap: wrap }