diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d76c771..4218b6c0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,31 +28,7 @@ jobs: fail-fast: false matrix: arch: - - aarch64_cortex-a53 - - aarch64_cortex-a72 - - aarch64_generic - - arm_arm1176jzf-s_vfp - - arm_arm926ej-s - - arm_cortex-a15_neon-vfpv4 - - arm_cortex-a5_vfpv4 - - arm_cortex-a7 - - arm_cortex-a7_neon-vfpv4 - - arm_cortex-a8_vfpv3 - - arm_cortex-a9 - - arm_cortex-a9_neon - - arm_cortex-a9_vfpv3-d16 - - arm_fa526 - #- arm_mpcore - - arm_xscale - - mips_24kc - #- mips_4kec - - mips_mips32 - - mipsel_24kc - - mipsel_24kc_24kf - - mipsel_74kc - - mipsel_mips32 - x86_64 - sdk: - 22.03.7 - SNAPSHOT @@ -140,5 +116,3 @@ jobs: tag_name: ${{ env.TAG }} files: release/*.zip - - diff --git a/luci-app-easytier/luasrc/controller/easytier.lua b/luci-app-easytier/luasrc/controller/easytier.lua index 395c67a4..b7f80e01 100644 --- a/luci-app-easytier/luasrc/controller/easytier.lua +++ b/luci-app-easytier/luasrc/controller/easytier.lua @@ -47,37 +47,37 @@ function index() return end - entry({"admin", "vpn"}, firstchild(), "VPN", 45).dependent = false - entry({"admin", "vpn", "easytier"}, firstchild(),_("EasyTier"), 46).dependent = true - entry({"admin", "vpn", "easytier", "status"}, cbi("easytier_status"),_("Status"), 1).leaf = true - entry({"admin", "vpn", "easytier", "config"}, cbi("easytier"),_("EasyTier Core"), 2).leaf = true - entry({"admin", "vpn", "easytier", "webconsole"}, template("easytier/easytier_web"),_("EasyTier Web"), 3).leaf = true - entry({"admin", "vpn", "easytier", "log"}, template("easytier/easytier_log"),_("Logs"), 4).leaf = true - entry({"admin", "vpn", "easytier", "upload"}, template("easytier/easytier_upload"),_("Upload Program"), 5).leaf = true - entry({"admin", "vpn", "easytier", "upload_binary"}, call("upload_binary")).leaf = true - entry({"admin", "vpn", "easytier", "get_upload_config"}, call("get_upload_config")).leaf = true - entry({"admin", "vpn", "easytier", "save_upload_config"}, call("save_upload_config")).leaf = true - entry({"admin", "vpn", "easytier", "get_disk_space"}, call("get_disk_space")).leaf = true - entry({"admin", "vpn", "easytier", "get_tun_info"}, call("get_tun_info")).leaf = true - entry({"admin", "vpn", "easytier", "get_log"}, call("get_log")).leaf = true - entry({"admin", "vpn", "easytier", "get_log_size"}, call("get_log_size")).leaf = true - entry({"admin", "vpn", "easytier", "clear_log"}, call("clear_log")).leaf = true - entry({"admin", "vpn", "easytier", "get_wlog"}, call("get_wlog")).leaf = true - entry({"admin", "vpn", "easytier", "get_wlog_size"}, call("get_wlog_size")).leaf = true - entry({"admin", "vpn", "easytier", "clear_wlog"}, call("clear_wlog")).leaf = true - entry({"admin", "vpn", "easytier", "clear_version_cache"}, call("clear_version_cache")).leaf = true - entry({"admin", "vpn", "easytier", "get_web_config"}, call("get_web_config")).leaf = true - entry({"admin", "vpn", "easytier", "save_web_config"}, call("save_web_config")).leaf = true - entry({"admin", "vpn", "easytier", "reset_database"}, call("reset_database")).leaf = true - entry({"admin", "vpn", "easytier", "check_web_status"}, call("check_web_status")).leaf = true - entry({"admin", "vpn", "easytier", "api_status"}, call("act_status")).leaf = true - entry({"admin", "vpn", "easytier", "api_conninfo"}, call("act_conninfo")).leaf = true - entry({"admin", "vpn", "easytier", "restart_service"}, call("restart_service")).leaf = true - entry({"admin", "vpn", "easytier", "toggle_core"}, call("toggle_core")).leaf = true - entry({"admin", "vpn", "easytier", "toggle_web"}, call("toggle_web")).leaf = true - entry({"admin", "vpn", "easytier", "download_easytier"}, call("download_easytier")).leaf = true - entry({"admin", "vpn", "easytier", "download_progress"}, call("download_progress")).leaf = true - entry({"admin", "vpn", "easytier", "cancel_download"}, call("cancel_download")).leaf = true + entry({"admin", "services"}, firstchild(), "Services", 45).dependent = false + entry({"admin", "services", "easytier"}, firstchild(),_("EasyTier"), 46).dependent = true + entry({"admin", "services", "easytier", "status"}, cbi("easytier_status"),_("Status"), 1).leaf = true + entry({"admin", "services", "easytier", "config"}, cbi("easytier"),_("EasyTier Core"), 2).leaf = true + entry({"admin", "services", "easytier", "webconsole"}, template("easytier/easytier_web"),_("EasyTier Web"), 3).leaf = true + entry({"admin", "services", "easytier", "log"}, template("easytier/easytier_log"),_("Logs"), 4).leaf = true + entry({"admin", "services", "easytier", "upload"}, template("easytier/easytier_upload"),_("Upload Program"), 5).leaf = true + entry({"admin", "services", "easytier", "upload_binary"}, call("upload_binary")).leaf = true + entry({"admin", "services", "easytier", "get_upload_config"}, call("get_upload_config")).leaf = true + entry({"admin", "services", "easytier", "save_upload_config"}, call("save_upload_config")).leaf = true + entry({"admin", "services", "easytier", "get_disk_space"}, call("get_disk_space")).leaf = true + entry({"admin", "services", "easytier", "get_tun_info"}, call("get_tun_info")).leaf = true + entry({"admin", "services", "easytier", "get_log"}, call("get_log")).leaf = true + entry({"admin", "services", "easytier", "get_log_size"}, call("get_log_size")).leaf = true + entry({"admin", "services", "easytier", "clear_log"}, call("clear_log")).leaf = true + entry({"admin", "services", "easytier", "get_wlog"}, call("get_wlog")).leaf = true + entry({"admin", "services", "easytier", "get_wlog_size"}, call("get_wlog_size")).leaf = true + entry({"admin", "services", "easytier", "clear_wlog"}, call("clear_wlog")).leaf = true + entry({"admin", "services", "easytier", "clear_version_cache"}, call("clear_version_cache")).leaf = true + entry({"admin", "services", "easytier", "get_web_config"}, call("get_web_config")).leaf = true + entry({"admin", "services", "easytier", "save_web_config"}, call("save_web_config")).leaf = true + entry({"admin", "services", "easytier", "reset_database"}, call("reset_database")).leaf = true + entry({"admin", "services", "easytier", "check_web_status"}, call("check_web_status")).leaf = true + entry({"admin", "services", "easytier", "api_status"}, call("act_status")).leaf = true + entry({"admin", "services", "easytier", "api_conninfo"}, call("act_conninfo")).leaf = true + entry({"admin", "services", "easytier", "restart_service"}, call("restart_service")).leaf = true + entry({"admin", "services", "easytier", "toggle_core"}, call("toggle_core")).leaf = true + entry({"admin", "services", "easytier", "toggle_web"}, call("toggle_web")).leaf = true + entry({"admin", "services", "easytier", "download_easytier"}, call("download_easytier")).leaf = true + entry({"admin", "services", "easytier", "download_progress"}, call("download_progress")).leaf = true + entry({"admin", "services", "easytier", "cancel_download"}, call("cancel_download")).leaf = true end function act_status() diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_cli.htm b/luci-app-easytier/luasrc/view/easytier/easytier_cli.htm index 38b71400..85f7ce1d 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_cli.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_cli.htm @@ -1063,6 +1063,46 @@ var lines = content.split(/\r?\n/).filter(function(l) { return l.trim() !== ''; }); if (lines.length === 0 || lines[0].indexOf('|') === -1) { + // 启动参数不翻译 + if (tabName === 'cmdline') { + var html = '
' + escapeHtml(content) + '
'; + + // 检查是否使用配置文件启动 + if (content.indexOf('--config-file') !== -1 || content.match(/-c\s+\//)) { + XHR.get('<%=url("admin/services/easytier/api_conninfo")%>', null, function(x, data) { + if (data && data.config_file) { + var configDiv = document.createElement('div'); + configDiv.className = 'et-pre'; + configDiv.style.marginTop = '16px'; + configDiv.style.borderTop = '2px solid var(--border-color)'; + configDiv.style.paddingTop = '16px'; + + var title = document.createElement('div'); + title.style.fontWeight = '600'; + title.style.marginBottom = '8px'; + title.style.color = 'var(--primary-color)'; + title.textContent = tr('Configuration File Content') + ':'; + + var contentDiv = document.createElement('pre'); + contentDiv.style.margin = '0'; + contentDiv.style.whiteSpace = 'pre-wrap'; + contentDiv.style.wordBreak = 'break-all'; + contentDiv.textContent = data.config_file; + + configDiv.appendChild(title); + configDiv.appendChild(contentDiv); + + var container = document.querySelector('.et-tab-content[data-tab="cmdline"]'); + if (container) { + container.appendChild(configDiv); + } + } + }); + } + + return html; + } + // 对非表格内容进行全面翻译处理 var translatedContent = content; @@ -1214,7 +1254,7 @@ btnText.textContent = '<%:Refreshing...%>'; var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "api_conninfo")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "api_conninfo")%>', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { isRefreshing = false; @@ -1495,7 +1535,7 @@ } // 自动刷新 -XHR.poll(5, '<%=url("admin", "vpn", "easytier", "api_conninfo")%>', null, function(x, data) { +XHR.poll(5, '<%=url("admin", "services", "easytier", "api_conninfo")%>', null, function(x, data) { if (!isRefreshing) { updateConnInfo(data); } diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_log.htm b/luci-app-easytier/luasrc/view/easytier/easytier_log.htm index 5e6761ad..3216046e 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_log.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_log.htm @@ -408,8 +408,8 @@ function refreshLog() { var url = currentLog === 'core' - ? '<%=url("admin/vpn/easytier/get_log")%>' - : '<%=url("admin/vpn/easytier/get_wlog")%>'; + ? '<%=url("admin/services/easytier/get_log")%>' + : '<%=url("admin/services/easytier/get_wlog")%>'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); @@ -446,8 +446,8 @@ function updateLogSize() { var url = currentLog === 'core' - ? '<%=url("admin/vpn/easytier/get_log_size")%>' - : '<%=url("admin/vpn/easytier/get_wlog_size")%>'; + ? '<%=url("admin/services/easytier/get_log_size")%>' + : '<%=url("admin/services/easytier/get_wlog_size")%>'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); @@ -473,8 +473,8 @@ function clearCurrentLog() { var url = currentLog === 'core' - ? '<%=url("admin/vpn/easytier/clear_log")%>' - : '<%=url("admin/vpn/easytier/clear_wlog")%>'; + ? '<%=url("admin/services/easytier/clear_log")%>' + : '<%=url("admin/services/easytier/clear_wlog")%>'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_status.htm b/luci-app-easytier/luasrc/view/easytier/easytier_status.htm index c49c4924..8e3ca2d4 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_status.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_status.htm @@ -738,7 +738,7 @@ showToast('<%=translate("Restarting service...")%>'); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "restart_service")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "restart_service")%>', true); xhr.onload = function() { setTimeout(function() { actionCooldown = false; @@ -770,7 +770,7 @@ setControlsDisabled(true); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "toggle_core")%>?enabled=' + (enabled ? '1' : '0'), true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "toggle_core")%>?enabled=' + (enabled ? '1' : '0'), true); xhr.onload = function() { setTimeout(function() { actionCooldown = false; @@ -796,7 +796,7 @@ setControlsDisabled(true); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "toggle_web")%>?enabled=' + (enabled ? '1' : '0'), true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "toggle_web")%>?enabled=' + (enabled ? '1' : '0'), true); xhr.onload = function() { setTimeout(function() { actionCooldown = false; @@ -982,7 +982,7 @@ var ifname = devName || 'tun0'; var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "get_tun_info")%>?ifname=' + encodeURIComponent(ifname), true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "get_tun_info")%>?ifname=' + encodeURIComponent(ifname), true); xhr.onload = function() { if (xhr.status === 200) { try { @@ -1074,7 +1074,7 @@ } var firstLoad = true; -XHR.poll(3, '<%=url("admin", "vpn", "easytier", "api_status")%>', null, function(x, data) { +XHR.poll(3, '<%=url("admin", "services", "easytier", "api_status")%>', null, function(x, data) { updateStatus(data); updateTunInterface(data.crunning, data.no_tun, data.dev_name); @@ -1132,7 +1132,7 @@ function confirmRefreshVersion() { closeVersionModal(); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "clear_version_cache")%>?type=' + currentVersionType, true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "clear_version_cache")%>?type=' + currentVersionType, true); xhr.onload = function() { if (xhr.status === 200) { XHR.poll(0); diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_upload.htm b/luci-app-easytier/luasrc/view/easytier/easytier_upload.htm index eb013744..0249d491 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_upload.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_upload.htm @@ -745,7 +745,7 @@

<%=translate("Online Download EasyTier")%>

function loadConfig() { var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "get_upload_config")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "get_upload_config")%>', true); xhr.onload = function() { if (xhr.status === 200) { try { @@ -795,7 +795,7 @@

<%=translate("Online Download EasyTier")%>

dir = dir ? dir[1] : '/tmp'; var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "get_disk_space")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "get_disk_space")%>', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { if (xhr.status === 200) { @@ -872,7 +872,7 @@

<%=translate("Online Download EasyTier")%>

}; var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "save_upload_config")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "save_upload_config")%>', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { if (xhr.status === 200) { @@ -1033,7 +1033,7 @@

<%=translate("Online Download EasyTier")%>

formData.append('file', file); var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "upload_binary")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "upload_binary")%>', true); xhr.upload.onprogress = function(event) { if (event.lengthComputable) { @@ -1126,7 +1126,7 @@

<%=translate("Online Download EasyTier")%>

showAlert('info', '<%=translate("Restarting service...")%>'); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "restart_service")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "restart_service")%>', true); xhr.onload = function() { if (xhr.status === 200) { setTimeout(function() { @@ -1320,7 +1320,7 @@

<%=translate("Online Download EasyTier")%>

function checkExistingDownload() { var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "download_progress")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "download_progress")%>', true); xhr.onload = function() { if (xhr.status === 200) { try { @@ -1375,7 +1375,7 @@

<%=translate("Online Download EasyTier")%>

function cancelDownload() { // 调用后端取消下载 var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "cancel_download")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "cancel_download")%>', true); xhr.onload = function() { closeDownloadModal(); showAlert('info', '<%=translate("Cancelling download, may take up to 5 minutes to stop the current task")%>'); @@ -1428,7 +1428,7 @@

<%=translate("Online Download EasyTier")%>

// 发送下载请求 var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "download_easytier")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "download_easytier")%>', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_web.htm b/luci-app-easytier/luasrc/view/easytier/easytier_web.htm index 96715217..0d1664ff 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_web.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_web.htm @@ -797,7 +797,7 @@

<%:Self-hosted Web Console%>

function loadConfig() { var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "get_web_config")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "get_web_config")%>', true); xhr.onload = function() { if (xhr.status === 200) { var data = JSON.parse(xhr.responseText); @@ -907,7 +907,7 @@

<%:Self-hosted Web Console%>

} var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "save_web_config")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "save_web_config")%>', true); xhr.onload = function() { if (xhr.status === 200) { showAlert('success', '<%:Configuration saved successfully%>'); @@ -940,7 +940,7 @@

<%:Self-hosted Web Console%>

function checkWebStatus() { var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "check_web_status")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "check_web_status")%>', true); xhr.onload = function() { if (xhr.status === 200) { var data = JSON.parse(xhr.responseText); @@ -984,7 +984,7 @@

<%:Self-hosted Web Console%>

var dbPath = document.getElementById('web_db_path').value || '/etc/easytier/et.db'; var xhr = new XMLHttpRequest(); - xhr.open('POST', '<%=url("admin", "vpn", "easytier", "reset_database")%>', true); + xhr.open('POST', '<%=url("admin", "services", "easytier", "reset_database")%>', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { closeResetDbModal(); @@ -1013,7 +1013,7 @@

<%:Self-hosted Web Console%>

function checkWebStatusForRestart(deletedFiles) { var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "check_web_status")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "check_web_status")%>', true); xhr.onload = function() { if (xhr.status === 200) { try { @@ -1061,7 +1061,7 @@

<%:Self-hosted Web Console%>

showAlert('info', '<%:Restarting service...%>'); var xhr = new XMLHttpRequest(); - xhr.open('GET', '<%=url("admin", "vpn", "easytier", "restart_service")%>', true); + xhr.open('GET', '<%=url("admin", "services", "easytier", "restart_service")%>', true); xhr.onload = function() { if (xhr.status === 200) { setTimeout(function() {