diff options
7 files changed, 509 insertions, 462 deletions
diff --git a/THANKYOU b/THANKYOU deleted file mode 100644 index f0519bd8bf..0000000000 --- a/THANKYOU +++ /dev/null @@ -1,26 +0,0 @@ -I'd like to thank the following people for contributing to this software: - -* Anton Popov - - for rewriting the openwrt.org theme - -* Florian Fainelli (OpenWrt) - - for the french translation - -* Alina Friedrichsen - - for the reworked translation system, help on standards compliance and accessibility - -* Yanira - - several applications and bugreports - - -Also a big thank you goes to: - -* Mono (Freifunk Halle) - - for donating a Linksys WRT54GL for development purposes - -* tetzlav (Freifunk Leipzig) - - for donating several boards for testing and his feedback - -* Mickey (Freifunk Hannover) - - for his feedback and fixes for the OpenWrt builds - diff --git a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js index e23414f705..2cf5cc6e1b 100644 --- a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js +++ b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js @@ -1,382 +1,427 @@ -function $(s) { return document.getElementById(s.substring(1)); } +function $(s) { + return document.getElementById(s.substring(1)); +} -function show(s) { $(s).style.display = 'block'; } +function show(s) { + $(s).style.display = 'block'; +} -function hide(s) { $(s).style.display = 'none'; } +function hide(s) { + $(s).style.display = 'none'; +} function set_server() { - hide("#status_box"); - data.url = $("#server").value; - ubus_call("uci", "set", { "config": "attendedsysupgrade", "section": "server", values: { "url": data.url } }) - ubus_call("uci", "commit", { "config": "attendedsysupgrade" }) - var server_button = $("#server") - server_button.type = 'button'; - server_button.className = 'cbi-button cbi-button-edit'; - server_button.parentElement.removeChild($("#button_set")); - server_button.onclick = edit_server; + hide("#status_box"); + data.url = $("#server").value; + ubus_call("uci", "set", { + "config": "attendedsysupgrade", + "section": "server", + values: { + "url": data.url + } + }) + ubus_call("uci", "commit", { + "config": "attendedsysupgrade" + }) + var server_button = $("#server") + server_button.type = 'button'; + server_button.className = 'cbi-button cbi-button-edit'; + server_button.parentElement.removeChild($("#button_set")); + server_button.onclick = edit_server; } function edit_server() { - $("#server").type = 'text'; - $("#server").onkeydown = function(event) { - if(event.key === 'Enter') { - set_server(); - return false; - } - } - $("#server").className = ''; - $("#server").onclick = null; - - var button_set = document.createElement("input"); - button_set.type = "button"; - button_set.value = "Save"; - button_set.name = "button_set"; - button_set.id = "button_set"; - button_set.className = 'cbi-button cbi-button-save'; - button_set.onclick = set_server - $("#server").parentElement.appendChild(button_set); + $("#server").type = 'text'; + $("#server").onkeydown = function(event) { + if (event.key === 'Enter') { + set_server(); + return false; + } + } + $("#server").className = ''; + $("#server").onclick = null; + + var button_set = document.createElement("input"); + button_set.type = "button"; + button_set.value = "Save"; + button_set.name = "button_set"; + button_set.id = "button_set"; + button_set.className = 'cbi-button cbi-button-save'; + button_set.onclick = set_server + $("#server").parentElement.appendChild(button_set); } function edit_packages() { - data.edit_packages = true - hide("#edit_button"); - $("#edit_packages").value = data.packages.join("\n"); - show("#edit_packages"); + data.edit_packages = true + hide("#edit_button"); + $("#edit_packages").value = data.packages.join("\n"); + show("#edit_packages"); } // requests to the upgrade server -function server_request(request_dict, path, callback) { - request_dict.distro = data.release.distribution; - request_dict.target = data.release.target; - var request = new XMLHttpRequest(); - request.open("POST", data.url + "/" + path, true); - request.setRequestHeader("Content-type", "application/json"); - request.send(JSON.stringify(request_dict)); - request.onerror = function(e) { - set_status("danger", "upgrade server down") - show("#server_div"); - } - request.addEventListener('load', function(event) { - callback(request) - }); +function server_request(path, callback) { + var request = new XMLHttpRequest(); + request.open("POST", data.url + "/" + path, true); + request.setRequestHeader("Content-type", "application/json"); + request.send(JSON.stringify(request_dict)); + request.onerror = function(e) { + set_status("danger", "upgrade server down") + show("#server_div"); + } + request.addEventListener('load', function(event) { + callback(request) + }); } // initial setup, get system information function setup() { - ubus_call("rpc-sys", "packagelist", {}, "packages"); - ubus_call("system", "board", {}, "release"); - ubus_call("system", "board", {}, "board_name"); - ubus_call("system", "board", {}, "model"); - ubus_call("system", "info", {}, "memory"); - uci_get({ "config": "attendedsysupgrade", "section": "server", "option": "url" }) - uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "upgrade_packages" }) - uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "advanced_mode" }) - uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "auto_search" }) - setup_ready(); + ubus_call("rpc-sys", "packagelist", {}, "packages"); + ubus_call("system", "board", {}, "release"); + ubus_call("system", "board", {}, "board_name"); + ubus_call("system", "board", {}, "model"); + ubus_call("system", "info", {}, "memory"); + uci_get({ + "config": "attendedsysupgrade", + "section": "server", + "option": "url" + }) + uci_get({ + "config": "attendedsysupgrade", + "section": "client", + "option": "upgrade_packages" + }) + uci_get({ + "config": "attendedsysupgrade", + "section": "client", + "option": "advanced_mode" + }) + uci_get({ + "config": "attendedsysupgrade", + "section": "client", + "option": "auto_search" + }) + setup_ready(); } function setup_ready() { - // checks if a async ubus calls have finished - if(ubus_counter != ubus_closed) { - setTimeout(setup_ready, 300) - } else { - if(data.auto_search == 1) { - upgrade_check(); - } else { - show("#upgrade_button"); - show("#server_div"); - $("#server").value = data.url; - } - } + // checks if a async ubus calls have finished + if (ubus_counter != ubus_closed) { + setTimeout(setup_ready, 300) + } else { + if (data.auto_search == 1) { + upgrade_check(); + } else { + show("#upgrade_button"); + show("#server_div"); + $("#server").value = data.url; + } + } } function uci_get(option) { - // simple wrapper to get a uci value store in data.<option> - ubus_call("uci", "get", option, option["option"]) + // simple wrapper to get a uci value store in data.<option> + ubus_call("uci", "get", option, option["option"]) } ubus_counter = 0; ubus_closed = 0; + function ubus_call(command, argument, params, variable) { - var request_data = {}; - request_data.jsonrpc = "2.0"; - request_data.id = ubus_counter; - request_data.method = "call"; - request_data.params = [ data.ubus_rpc_session, command, argument, params ] - var request_json = JSON.stringify(request_data) - ubus_counter++; - var request = new XMLHttpRequest(); - request.open("POST", ubus_url, true); - request.setRequestHeader("Content-type", "application/json"); - request.onload = function(event) { - if(request.status === 200) { - var response = JSON.parse(request.responseText) - if(!("error" in response) && "result" in response) { - if(response.result.length === 2) { - if(command === "uci") { - data[variable] = response.result[1].value - } else { - data[variable] = response.result[1][variable] - } - } - } else { - set_status("danger", "<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response)) - } - ubus_closed++; - } - } - request.send(request_json); + var request_data = {}; + request_data.jsonrpc = "2.0"; + request_data.id = ubus_counter; + request_data.method = "call"; + request_data.params = [data.ubus_rpc_session, command, argument, params] + var request_json = JSON.stringify(request_data) + ubus_counter++; + var request = new XMLHttpRequest(); + request.open("POST", ubus_url, true); + request.setRequestHeader("Content-type", "application/json"); + request.onload = function(event) { + if (request.status === 200) { + var response = JSON.parse(request.responseText) + if (!("error" in response) && "result" in response) { + if (response.result.length === 2) { + if (command === "uci") { + data[variable] = response.result[1].value + } else { + data[variable] = response.result[1][variable] + } + } + } else { + set_status("danger", "<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response)) + } + ubus_closed++; + } + } + request.send(request_json); } -function set_status(type, message, loading) { - $("#status_box").className = "alert-message " + type; - var loading_image = ''; - if(loading) { - loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle"> '; - } - $("#status_box").innerHTML = loading_image + message; - show("#status_box") +function set_status(type, message, loading, show_log) { + $("#status_box").className = "alert-message " + type; + var loading_image = ''; + if (loading) { + loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle"> '; + } + if (show_log && data.log) { + message += ' <p><a target="_blank" href="' + data.url + data.log + '">Build log</a></p>' + } + $("#status_box").innerHTML = loading_image + message; + show("#status_box") } function upgrade_check() { - // Asks server for new firmware - // If data.upgrade_packages is set to true search for new package versions as well - hide("#status_box"); - hide("#server_div"); - set_status("info", "Searching for upgrades", true); - var request_dict = {} - request_dict.version = data.release.version; - request_dict.revision = data.release.revision; - request_dict.installed = data.packages; - request_dict.upgrade_packages = data.upgrade_packages - server_request(request_dict, "api/upgrade-check", upgrade_check_callback) + // Asks server for new firmware + // If data.upgrade_packages is set to true search for new package versions as well + hide("#status_box"); + hide("#server_div"); + set_status("info", "Searching for upgrades", true); + request_dict.distro = data.release.distribution; + request_dict.version = data.release.version; + request_dict.target = data.release.target; + request_dict.revision = data.release.revision; + request_dict.installed = data.packages; + request_dict.upgrade_packages = data.upgrade_packages + server_request("api/upgrade-check", upgrade_check_callback) } function upgrade_check_callback(request_text) { - var request_json = JSON.parse(request_text) - - // create simple output to tell user what's going to be upgrade (release/packages) - var info_output = "" - if(request_json.version != undefined) { - info_output += "<h3>New firmware release available</h3>" - info_output += data.release.version + " to " + request_json.version - data.latest_version = request_json.version; - } - if(request_json.upgrades != undefined) { - info_output += "<h3>Package upgrades available</h3>" - for (var upgrade in request_json.upgrades) { - info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />" - } - } - data.packages = request_json.packages - set_status("success", info_output) - - if(data.advanced_mode == 1) { - show("#edit_button"); - } - var upgrade_button = $("#upgrade_button") - upgrade_button.value = "Request firmware"; - upgrade_button.style.display = "block"; - upgrade_button.disabled = false; - upgrade_button.onclick = upgrade_request; - + var request_json = JSON.parse(request_text) + + // create simple output to tell user what's going to be upgrade (release/packages) + var info_output = "" + if (request_json.version) { + info_output += "<h3>New release <b>" + request_json.version + "</b> available</h3>" + info_output += "Installed version: " + data.release.version + request_dict.version = request_json.version; + } + if (request_json.upgrades) { + if (request_json.upgrades != {}) { + info_output += "<h3>Package upgrades available</h3>" + for (var upgrade in request_json.upgrades) { + info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />" + } + } + } + data.packages = request_json.packages + set_status("success", info_output) + + if (data.advanced_mode == 1) { + show("#edit_button"); + } + var upgrade_button = $("#upgrade_button") + upgrade_button.value = "Request firmware"; + upgrade_button.style.display = "block"; + upgrade_button.disabled = false; + upgrade_button.onclick = upgrade_request; } function upgrade_request() { - // Request the image - // Needed values - // version/release - // board_name or model (server tries to find the correct profile) - // packages - // The rest is added by server_request() - $("#upgrade_button").disabled = true; - hide("#edit_packages"); - hide("#edit_button"); - hide("#keep_container"); - - var request_dict = {} - request_dict.version = data.latest_version; - request_dict.board = data.board_name - request_dict.model = data.model - - if(data.edit_packages == true) { - request_dict.packages = $("#edit_packages").value.split("\n") - } else { - request_dict.packages = data.packages; - } - - server_request(request_dict, "api/upgrade-request", upgrade_request_callback) + // Request firmware using the following parameters + // distro, version, target, board_name/model, packages + $("#upgrade_button").disabled = true; + hide("#edit_packages"); + hide("#edit_button"); + hide("#keep_container"); + + // remove "installed" entry as unused by build requests + delete request_dict.installed + // add board info to let server determine profile + request_dict.board_name = data.board_name + request_dict.board = data.board_name + request_dict.model = data.model + + if (data.edit_packages == true) { + request_dict.packages = $("#edit_packages").value.split("\n") + } else { + request_dict.packages = data.packages; + } + server_request("api/upgrade-request", upgrade_request_callback) } function upgrade_request_callback(request) { - // ready to download - var request_json = JSON.parse(request); - data.files = request_json.files; - data.sysupgrade = request_json.sysupgrade; - - var info_output = 'Firmware created: <a href="' + data.url + data.files + data.sysupgrade + '"><b>' + data.sysupgrade+ '</b></a>' - info_output += ' <a target="_blank" href="' + data.url + request_json.log + '">Build log</a>' - set_status("info", info_output); - - show("#keep_container"); - var upgrade_button = $("#upgrade_button") - upgrade_button.disabled = false; - upgrade_button.style.display = "block"; - upgrade_button.value = "Flash firmware"; - upgrade_button.onclick = download_image; + // ready to download + var request_json = JSON.parse(request) + data.files = request_json.files + data.sysupgrade = request_json.sysupgrade + data.log = request_json.log + + var info_output = '<h3>Firmware created</h3><p>Created file: <a href="' + data.url + data.files + data.sysupgrade + '">' + data.sysupgrade + '</p></a>' + set_status("success", info_output, false, true); + + show("#keep_container"); + var upgrade_button = $("#upgrade_button") + upgrade_button.disabled = false; + upgrade_button.style.display = "block"; + upgrade_button.value = "Flash firmware"; + upgrade_button.onclick = download_image; } function flash_image() { - // Flash image via rpc-sys upgrade_start - set_status("warning", "Flashing firmware. Don't unpower device", true) - ubus_call("rpc-sys", "upgrade_start", { "keep": $("#keep").checked }, 'message'); - ping_max = 3600; // in seconds - setTimeout(ping_ubus, 10000) + // Flash image via rpc-sys upgrade_start + set_status("warning", "Flashing firmware. Don't unpower device", true) + ubus_call("rpc-sys", "upgrade_start", { + "keep": $("#keep").checked + }, 'message'); + ping_max = 3600; // in seconds + setTimeout(ping_ubus, 10000) } function ping_ubus() { - // Tries to connect to ubus. If the connection fails the device is likely still rebooting. - // If more time than ping_max passes update may failed - if(ping_max > 0) { - ping_max--; - var request = new XMLHttpRequest(); - request.open("GET", ubus_url, true); - request.addEventListener('error', function(event) { - set_status("warning", "Rebooting device - please wait!", true); - setTimeout(ping_ubus, 5000) - }); - request.addEventListener('load', function(event) { - set_status("success", "Success! Please reload web interface"); - $("#upgrade_button").value = "Reload page"; - show("#upgrade_button"); - $("#upgrade_button").disabled = false; - $("#upgrade_button").onclick = function() { location.reload(); } - }); - request.send(); - } else { - set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually") - } + // Tries to connect to ubus. If the connection fails the device is likely still rebooting. + // If more time than ping_max passes update may failed + if (ping_max > 0) { + ping_max--; + var request = new XMLHttpRequest(); + request.open("GET", ubus_url, true); + request.addEventListener('error', function(event) { + set_status("warning", "Rebooting device - please wait!", true); + setTimeout(ping_ubus, 5000) + }); + request.addEventListener('load', function(event) { + set_status("success", "Success! Please reload web interface"); + $("#upgrade_button").value = "Reload page"; + show("#upgrade_button"); + $("#upgrade_button").disabled = false; + $("#upgrade_button").onclick = function() { + location.reload(); + } + }); + request.send(); + } else { + set_status("danger", "Web interface could not reconnect to your device. Please reload web interface or check device manually") + } } function upload_image(blob) { - // Uploads received blob data to the server using cgi-io - set_status("info", "Uploading firmware to device", true); - var request = new XMLHttpRequest(); - var form_data = new FormData(); - - form_data.append("sessionid", data.ubus_rpc_session) - form_data.append("filename", "/tmp/firmware.bin") - form_data.append("filemode", 755) // insecure? - form_data.append("filedata", blob) - - request.addEventListener('load', function(event) { - request_json = JSON.parse(request.responseText) - flash_image(); - }); - - request.addEventListener('error', function(event) { - set_status("danger", "Upload of firmware failed, please retry by reloading web interface") - }); - - request.open('POST', origin + '/cgi-bin/cgi-upload'); - request.send(form_data); + // Uploads received blob data to the server using cgi-io + set_status("info", "Uploading firmware to device", true); + var request = new XMLHttpRequest(); + var form_data = new FormData(); + + form_data.append("sessionid", data.ubus_rpc_session) + form_data.append("filename", "/tmp/firmware.bin") + form_data.append("filemode", 755) // insecure? + form_data.append("filedata", blob) + + request.addEventListener('load', function(event) { + request_json = JSON.parse(request.responseText) + flash_image(); + }); + + request.addEventListener('error', function(event) { + set_status("danger", "Upload of firmware failed, please retry by reloading web interface") + }); + + request.open('POST', origin + '/cgi-bin/cgi-upload'); + request.send(form_data); } function download_image() { - // Download image from server once the url was received by upgrade_request - hide("#keep_container"); - hide("#upgrade_button"); - var download_request = new XMLHttpRequest(); - download_request.open("GET", data.url + data.files + data.sysupgrade); - download_request.responseType = "arraybuffer"; - - download_request.onload = function () { - if (this.status === 200) { - var blob = new Blob([download_request.response], {type: "application/octet-stream"}); - upload_image(blob) - } - }; - set_status("info", "Downloading firmware to web browser memory", true); - download_request.send(); + // Download image from server once the url was received by upgrade_request + hide("#keep_container"); + hide("#upgrade_button"); + var download_request = new XMLHttpRequest(); + download_request.open("GET", data.url + data.files + data.sysupgrade); + download_request.responseType = "arraybuffer"; + + download_request.onload = function() { + if (this.status === 200) { + var blob = new Blob([download_request.response], { + type: "application/octet-stream" + }); + upload_image(blob) + } + }; + set_status("info", "Downloading firmware to web browser memory", true); + download_request.send(); } -function server_request(request_dict, path, callback) { - var request_json; - request_dict.distro = data.release.distribution; - request_dict.target = data.release.target; - var request = new XMLHttpRequest(); - request.open("POST", data.url + "/" + path, true); - request.setRequestHeader("Content-type", "application/json"); - request.send(JSON.stringify(request_dict)); - request.onerror = function(e) { - set_status("danger", "Upgrade server down or could not connect") - show("#server_div"); - } - request.addEventListener('load', function(event) { - var request_text = request.responseText; - if (request.status === 200) { - callback(request_text) - - } else if (request.status === 202) { - var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status"); - if(imagebuilder === "queue") { - // in queue - var queue = request.getResponseHeader("X-Build-Queue-Position"); - set_status("info", "In build queue position " + queue, true) - console.log("queued"); - } else if(imagebuilder === "initialize") { - set_status("info", "Setting up ImageBuilder", true) - console.log("Setting up imagebuilder"); - } else if(imagebuilder === "building") { - set_status("info", "Building image", true); - console.log("building"); - } else { - // fallback if for some reasons the headers are missing e.g. browser blocks access - set_status("info", "Processing request", true); - console.log(imagebuilder) - } - setTimeout(function() { server_request(request_dict, path, callback) }, 5000) - - } else if (request.status === 204) { - // no upgrades available - set_status("success", "No upgrades available") - - } else if (request.status === 400) { - // bad request - request_json = JSON.parse(request_text) - set_status("danger", request_json.error) - - } else if (request.status === 412) { - // this is a bit generic - set_status("danger", "Unsupported device, release, target, subtraget or board") - - } else if (request.status === 413) { - set_status("danger", "No firmware created due to image size. Try again with less packages selected.") - - } else if (request.status === 422) { - var package_missing = request.getResponseHeader("X-Unknown-Package"); - set_status("danger", "Unknown package in request: <b>" + package_missing + "</b>") - } else if (request.status === 500) { - request_json = JSON.parse(request_text) - - var error_box_content = "<b>Internal server error</b><br />" - error_box_content += request_json.error - if(request_json.log != undefined) { - data.log_url = request_json.log - } - set_status("danger", error_box_content) - - } else if (request.status === 501) { - set_status("danger", "No sysupgrade file produced, may not supported by model.") - } else if (request.status === 502) { - // python part offline - set_status("danger", "Server down for maintenance") - setTimeout(function() { server_request(request_dict, path, callback) }, 30000) - } else if (request.status === 503) { - set_status("danger", "Server overloaded") - setTimeout(function() { server_request(request_dict, path, callback) }, 30000) - } - }); +function server_request(path, callback) { + var request_json; + var request = new XMLHttpRequest(); + request.open("POST", data.url + "/" + path, true); + request.setRequestHeader("Content-type", "application/json"); + request.send(JSON.stringify(request_dict)); + request.onerror = function(e) { + set_status("danger", "Upgrade server down or could not connect") + show("#server_div"); + } + request.addEventListener('load', function(event) { + var request_text = request.responseText; + if (request.status === 200) { + callback(request_text) + + } else if (request.status === 202) { + var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status"); + if (imagebuilder === "queue") { + // in queue + var queue = request.getResponseHeader("X-Build-Queue-Position"); + set_status("info", "In build queue position " + queue, true) + console.log("queued"); + } else if (imagebuilder === "building") { + set_status("info", "Building image", true); + console.log("building"); + } else { + // fallback if for some reasons the headers are missing e.g. browser blocks access + set_status("info", "Processing request", true); + console.log(imagebuilder) + } + setTimeout(function() { + server_request(path, callback) + }, 5000) + + } else if (request.status === 204) { + // no upgrades available + set_status("success", "No upgrades available") + + } else if (request.status === 400) { + // bad request + request_json = JSON.parse(request_text) + set_status("danger", request_json.error) + + } else if (request.status === 409) { + // bad request + request_json = JSON.parse(request_text) + data.log = request_json.log + set_status("danger", "Incompatible package selection. See build log for details", false, true) + + } else if (request.status === 412) { + // this is a bit generic + set_status("danger", "Unsupported device, release, target, subtraget or board") + + } else if (request.status === 413) { + set_status("danger", "No firmware created due to image size. Try again with less packages selected.") + + } else if (request.status === 422) { + var package_missing = request.getResponseHeader("X-Unknown-Package"); + set_status("danger", "Unknown package in request: <b>" + package_missing + "</b>") + } else if (request.status === 500) { + request_json = JSON.parse(request_text) + + var error_box_content = "<b>Internal server error</b><br />" + error_box_content += request_json.error + if (request_json.log != undefined) { + data.log = request_json.log + } + set_status("danger", error_box_content, false, true) + + } else if (request.status === 501) { + set_status("danger", "No sysupgrade file produced, may not supported by model.") + } else if (request.status === 502) { + // python part offline + set_status("danger", "Server down for maintenance") + setTimeout(function() { + server_request(path, callback) + }, 30000) + } else if (request.status === 503) { + set_status("danger", "Server overloaded") + setTimeout(function() { + server_request(path, callback) + }, 30000) + } + }); } +request_dict = {} document.onload = setup() diff --git a/applications/luci-app-firewall/po/es/firewall.po b/applications/luci-app-firewall/po/es/firewall.po index 8e7d1be3b8..67d93ac408 100644 --- a/applications/luci-app-firewall/po/es/firewall.po +++ b/applications/luci-app-firewall/po/es/firewall.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2019-03-01 17:36-0300\n" +"PO-Revision-Date: 2019-03-27 14:22-0300\n" "Last-Translator: José Vicente <josevteg@gmail.com>\n" "Language: es\n" "MIME-Version: 1.0\n" @@ -438,7 +438,7 @@ msgstr "Nueva regla SNAT" #: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:37 #: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:47 msgid "New forward rule" -msgstr "Nueva regla de traspaso" +msgstr "Nueva regla de reenvío" #: applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm:17 msgid "New input rule" @@ -629,7 +629,7 @@ msgstr "Dirección MAC origen" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:194 msgid "Source NAT" -msgstr "NAT origen" +msgstr "Origen NAT" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua:195 msgid "" @@ -637,7 +637,7 @@ msgid "" "control over the source IP used for outgoing traffic, for example to map " "multiple WAN addresses to internal subnets." msgstr "" -"NAT origen es una forma específica de enmascaramiento que permite el control " +"Origen NAT es una forma específica de enmascaramiento que permite el control " "fino del origen IP que se usa en el tráfico de salida por ejemplo para " "dirigir múltiples direcciones WAN a las subredes internas." @@ -673,7 +673,7 @@ msgstr "Fecha de finalización (aaaa-mm-dd)" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:355 msgid "Stop Time (hh:mm:ss)" -msgstr "Tiempo de parada (hh:mm:ss)" +msgstr "Hora de finalización (hh:mm:ss)" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:338 msgid "Sunday" @@ -841,7 +841,7 @@ msgstr "Zonas" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:33 #: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:98 msgid "accept" -msgstr "aceptar" +msgstr "Aceptar" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:66 #: applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua:78 @@ -886,7 +886,7 @@ msgstr "día" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:327 msgid "don't track" -msgstr "no seguir" +msgstr "No seguir" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua:324 #: applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua:81 @@ -921,7 +921,7 @@ msgstr "puertos" #: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:31 #: applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua:96 msgid "reject" -msgstr "rechazar" +msgstr "Rechazar" #: applications/luci-app-firewall/luasrc/tools/firewall.lua:183 msgid "second" diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po index e5eea47615..5b46eb9332 100644 --- a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po +++ b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po @@ -7,18 +7,18 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" +"X-Generator: Poedit 2.2.1\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:100 msgid "Advanced Configuration" -msgstr "" +msgstr "詳細設定" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:69 msgid "Basic Configuration" -msgstr "" +msgstr "基本設定" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:134 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:60 @@ -37,7 +37,7 @@ msgstr "hosts ブラックリストのURL" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:67 msgid "Configuration" -msgstr "" +msgstr "設定" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:71 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:14 @@ -46,28 +46,28 @@ msgstr "システム ログとコンソール出力の冗長性を設定しま #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:102 msgid "Delay (in seconds) for on-boot start" -msgstr "" +msgstr "ブート時遅延実行(秒)" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:111 msgid "Disable Debugging" -msgstr "" +msgstr "デバッグ無効" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:106 msgid "Download time-out (in seconds)" -msgstr "" +msgstr "ダウンロード タイムアウト(秒)" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:110 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:112 msgid "Enable Debugging" -msgstr "" +msgstr "デバッグ有効" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:26 msgid "Enable/Start" -msgstr "" +msgstr "有効化/開始" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:110 msgid "Enables debug output to /tmp/simple-adblock.log" -msgstr "" +msgstr "/tmp/simple-adblock.log へのデバッグ出力を有効にします。" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:78 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:21 @@ -83,8 +83,8 @@ msgstr "全ローカル デバイスにルーター DNSサーバーの使用を #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:21 msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" msgstr "" -"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、" -"DNS ハイジャックとしても知られています。" +"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これ" +"は、DNS ハイジャックとしても知られています。" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:124 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:50 @@ -118,30 +118,30 @@ msgstr "右の設定で既に使用されていないLEDを選択します" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:43 msgid "Reload" -msgstr "" +msgstr "リロード" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:102 msgid "Run service after set delay on boot" -msgstr "" +msgstr "システムのブート時に、設定された遅延でサービスを開始します。" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:6 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:19 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:29 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:37 msgid "Service Status" -msgstr "" +msgstr "サービス ステータス" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:25 msgid "Service is disabled/stopped" -msgstr "" +msgstr "サービスは無効/停止中" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:34 msgid "Service is enabled/started" -msgstr "" +msgstr "サービスは有効/実行中" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:42 msgid "Service started with error" -msgstr "" +msgstr "サービス開始時にエラーが発生" #: applications/luci-app-simple-adblock/luasrc/controller/simple-adblock.lua:6 msgid "Simple AdBlock" @@ -159,15 +159,16 @@ msgstr "軽量出力" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:5 msgid "Start Simple Adblock service" -msgstr "" +msgstr "Simple Adblock サービスを開始" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:106 msgid "Stop the download if it is stalled for set number of seconds" msgstr "" +"問題等が発生して指定された秒数を超過した場合、ダウンロードを停止します。" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:35 msgid "Stop/Disable" -msgstr "" +msgstr "停止/無効化" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:72 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:15 @@ -192,7 +193,8 @@ msgstr "ホワイトリストに登録するドメインのリストのURLです #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:139 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:65 msgid "URLs to lists of hosts to be blacklisted" -msgstr "ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。" +msgstr "" +"ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:74 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:17 @@ -201,7 +203,7 @@ msgstr "詳細出力" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:117 msgid "Whitelist and Blocklist Management" -msgstr "" +msgstr "ホワイトリストとブラックリストの管理" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua:129 #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:55 @@ -217,6 +219,3 @@ msgstr "ホワイトリスト ドメイン" #: applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua:37 msgid "none" msgstr "なし" - -#~ msgid "Enable/start service" -#~ msgstr "サービスの有効化/開始" diff --git a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua index 61a94ca5dc..1644514166 100644 --- a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua +++ b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua @@ -37,7 +37,9 @@ end -- BEGIN Map m = Map("wifi_schedule", translate("Wifi Schedule"), translate("Defines a schedule when to turn on and off wifi.")) -function m.on_commit(self) +m.apply_on_parse = true + +function m.on_apply(self) sys.exec("/usr/bin/wifi_schedule.sh cron") end -- END Map diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po index 7271a107d3..d8802f8d8b 100644 --- a/modules/luci-base/po/es/base.po +++ b/modules/luci-base/po/es/base.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2019-03-05 20:29-0300\n" +"PO-Revision-Date: 2019-03-27 14:07-0300\n" "Last-Translator: José Vicente <josevteg@gmail.com>\n" "Language: es\n" "MIME-Version: 1.0\n" @@ -63,32 +63,32 @@ msgstr "-- Campo adicional --" #: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:26 #: protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua:36 msgid "-- Please choose --" -msgstr "-- Elija, por favor --" +msgstr "-- Por favor elija --" #: modules/luci-base/htdocs/luci-static/resources/cbi.js:865 #: modules/luci-base/htdocs/luci-static/resources/cbi.js:1025 #: modules/luci-base/luasrc/view/cbi/header.htm:6 msgid "-- custom --" -msgstr "-- perzonalizado --" +msgstr "-- Personalizado --" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:89 msgid "-- match by device --" -msgstr "-- emparejar por dispositivo --" +msgstr "-- Emparejar por dispositivo --" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:73 msgid "-- match by label --" -msgstr "-- emparejar por etiqueta --" +msgstr "-- Emparejar por etiqueta --" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:59 msgid "-- match by uuid --" -msgstr "-- emparejar por uuid --" +msgstr "-- Emparejar por uuid --" #: modules/luci-base/luasrc/view/cbi/dropdown.htm:24 #: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:27 #: modules/luci-base/luasrc/view/cbi/network_ifacelist.htm:44 #: modules/luci-base/luasrc/view/cbi/network_netlist.htm:23 msgid "-- please select --" -msgstr "-- por favor seleccione --" +msgstr "-- Por favor seleccione --" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381 msgid "0 = not using RSSI threshold, 1 = do not change driver default" @@ -331,11 +331,11 @@ msgstr "Acciones" #: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:69 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes" -msgstr "Rutas activas <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>" +msgstr "Rutas <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> activas" #: modules/luci-mod-status/luasrc/view/admin_status/routes.htm:97 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes" -msgstr "Rutas activas <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>" +msgstr "Rutas <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> activas" #: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:315 #: modules/luci-mod-status/luasrc/view/admin_status/index/30-network.htm:15 @@ -530,7 +530,7 @@ msgid "" "Always use 40MHz channels even if the secondary channel overlaps. Using this " "option does not comply with IEEE 802.11n-2009!" msgstr "" -"Siempre use canales de 40MHz incluso si el canal secundario se superpone. " +"Usará siempre canales de 40MHz incluso si el canal secundario se superpone. " "¡El uso de esta opción no cumple con IEEE 802.11n-2009!" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:95 @@ -618,7 +618,7 @@ msgstr "Monte anónimo" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49 msgid "Anonymous Swap" -msgstr "Intercambio Anónimo" +msgstr "Swap anónimo" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:321 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:328 @@ -738,7 +738,7 @@ msgstr "Montar automáticamente el sistemas de archivos en hotplug" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57 msgid "Automatically mount swap on hotplug" -msgstr "Montar Intercambio automáticamente en hotplug" +msgstr "Montar swap automáticamente en hotplug" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:61 msgid "Automount Filesystem" @@ -746,7 +746,7 @@ msgstr "Montar el sistema de archivos automáticamente" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:57 msgid "Automount Swap" -msgstr "Montar Intercambio automáticamente" +msgstr "Montar Swap automáticamente" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:102 msgid "Available" @@ -848,8 +848,8 @@ msgid "" "Bind dynamically to interfaces rather than wildcard address (recommended as " "linux default)" msgstr "" -"Enlace dinámico a las interfaces en lugar de a la dirección de comodín " -"(recomendado por defecto como linux)" +"Enlace dinámico a las interfaces en lugar de la dirección del comodín " +"(recomendado como linux predeterminado)" #: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:16 msgid "Bind interface" @@ -883,7 +883,7 @@ msgstr "Número de unidad del puente" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:250 msgid "Bring up on boot" -msgstr "Activar en el arranque" +msgstr "Iniciar en el arranque" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_overview.lua:35 msgid "Broadcom 802.11%s Wireless Controller" @@ -1017,7 +1017,7 @@ msgid "" "Choose the network(s) you want to attach to this wireless interface or fill " "out the <em>create</em> field to define a new network." msgstr "" -"Elija la red o redes a las que quiere unir esta interfaz WiFi o vacíe el " +"Elija la red o redes a las que quiere unir esta interfaz WiFi o rellene el " "campo <em>crear</em> para definir una red nueva." #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:612 @@ -1463,7 +1463,7 @@ msgstr "Diagnósticos" #: protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua:45 msgid "Dial number" -msgstr "Marque el número" +msgstr "Marcar el número" #: modules/luci-base/luasrc/view/cbi/filebrowser.htm:99 msgid "Directory" @@ -1551,7 +1551,7 @@ msgid "" "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> " "firewalls" msgstr "" -"dnsmasq es un programa que combina un servidor <abbr title=\"Dynamic Host " +"Dnsmasq es un programa que combina un servidor <abbr title=\"Dynamic Host " "Configuration Protocol\">DHCP</abbr> y un reenviador <abbr title=\"Domain " "Name System\">DNS</abbr> para Firewalls <abbr title=\"Network Address " "Translation\">NAT</abbr>" @@ -1733,7 +1733,7 @@ msgstr "Habilitar funcionalidad VLAN" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1164 msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Habilitar pulsador WPS, requiere WPA(2)-PSK" +msgstr "Habilitar botón WPS, requiere WPA(2)-PSK" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1149 msgid "Enable key reinstallation (KRACK) countermeasures" @@ -1754,7 +1754,7 @@ msgstr "Habilitar la duplicación de paquetes salientes" #: protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua:34 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." msgstr "" -"Habilite el indicador DF (No fragmentar) de los paquetes de encapsulación." +"Habilita el indicador DF (No fragmentar) de los paquetes de encapsulación." #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:53 msgid "Enable this mount" @@ -1766,7 +1766,7 @@ msgstr "Habilitar esta red" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:37 msgid "Enable this swap" -msgstr "Habilitar este Intercambio" +msgstr "Habilitar este swap" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/startup.lua:36 msgid "Enable/Disable" @@ -1780,19 +1780,19 @@ msgstr "Habilitado" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:277 msgid "Enables IGMP snooping on this bridge" -msgstr "Habilita la inspección IGMP en este puente" +msgstr "Habilita IGMP snooping en este puente" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:876 msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" msgstr "" -"Permite la itinerancia rápida entre los puntos de acceso que pertenecen al " +"Habilita la itinerancia rápida entre los puntos de acceso que pertenecen al " "mismo dominio de movilidad" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272 msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Activa el protocolo STP en este puente" +msgstr "Habilita el protocolo STP en este puente" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:120 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:180 @@ -2480,7 +2480,7 @@ msgstr "Identidad" #: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:70 msgid "If checked, 1DES is enabled" -msgstr "Si está marcado, 1DES está habilitado" +msgstr "Si está comprobado, 1DES está habilitado" #: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:65 msgid "If checked, encryption is disabled" @@ -2687,8 +2687,7 @@ msgstr "¡ID VLAN no válido! Sólo se permiten IDs únicos" #: modules/luci-base/luasrc/view/sysauth.htm:12 msgid "Invalid username and/or password! Please try again." -msgstr "" -"¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor." +msgstr "¡Nombre de usuario y/o contraseña no válido/s!. Por favor reintente." #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:506 msgid "Isolate Clients" @@ -2712,11 +2711,11 @@ msgstr "¡Se necesita JavaScript!" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:52 msgid "Join Network" -msgstr "Unirse a Red" +msgstr "Conectar" #: modules/luci-mod-network/luasrc/view/admin_network/wifi_join.htm:22 msgid "Join Network: Wireless Scan" -msgstr "Unirse a una red: Exploración WiFi" +msgstr "Conectarse a una red: Búsqueda de redes WiFi" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi_add.lua:19 msgid "Joining Network: %q" @@ -2841,12 +2840,12 @@ msgstr "IP máxima" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:247 msgid "Limit DNS service to subnets interfaces on which we are serving DNS." msgstr "" -"Limite el servicio de DNS a las subredes de interfaces en las que estamos " +"Limita el servicio de DNS a las subredes de interfaces en las que estamos " "sirviendo DNS." #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:259 msgid "Limit listening to these interfaces, and loopback." -msgstr "Limitar la escucha de estas interfaces, y el bucle de retorno." +msgstr "Limita la escucha de estas interfaces, y el bucle de retorno." #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:105 msgid "Line Attenuation (LATN)" @@ -3136,7 +3135,7 @@ msgstr "Máximo permitido de intervalo de escucha" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:193 msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo de clientes DHCP activas" +msgstr "Número máximo de clientes DHCP activos" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:212 msgid "Maximum allowed number of concurrent DNS queries" @@ -3178,7 +3177,7 @@ msgstr "Memoria" #: modules/luci-mod-status/luasrc/model/cbi/admin_status/processes.lua:14 msgid "Memory usage (%)" -msgstr "Uso de memoria (%)" +msgstr "Uso de RAM (%)" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:371 msgid "Mesh Id" @@ -3268,7 +3267,7 @@ msgstr "Puntos de montaje - Entrada de montaje" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:20 msgid "Mount Points - Swap Entry" -msgstr "Puntos de montaje - Entrada de intercambio" +msgstr "Puntos de montaje - Entrada de Swap" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:137 msgid "" @@ -3292,7 +3291,7 @@ msgstr "Punto de montaje" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:49 msgid "Mount swap not specifically configured" -msgstr "Montaje de Intercambio no configurado específicamente" +msgstr "Montaje de Swap no configurado específicamente" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:96 msgid "Mounted file systems" @@ -3475,7 +3474,7 @@ msgstr "Errores de CRC no preventivos (CRC P)" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:252 msgid "Non-wildcard" -msgstr "No comodín" +msgstr "Sin comodín" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_status.js:44 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:76 @@ -3915,7 +3914,7 @@ msgstr "Pares" #: protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua:50 msgid "Perfect Forward Secrecy" -msgstr "Perfecto reenvío secreto" +msgstr "Reenvío secreto perfecto" #: modules/luci-mod-system/luasrc/view/admin_system/reboot.htm:19 msgid "Perform reboot" @@ -4109,8 +4108,8 @@ msgid "" "Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> " "servers" msgstr "" -"Consulte todos los servidores <abbr title=\"Sistema de nombres de dominio" -"\">DNS</abbr> disponibles en sentido ascendente" +"Consulta todos los servidores <abbr title=\"Sistema de nombres de dominio" +"\">DNS</abbr> disponibles en el enlace" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:932 msgid "R0 Key Lifetime" @@ -4327,7 +4326,7 @@ msgstr "Requerido" #: modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua:20 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3" +msgstr "Requerido para ciertos ISPs, por ejemplo Charter con DOCSIS 3" #: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:19 msgid "Required. Base64-encoded private key for this interface." @@ -4527,7 +4526,7 @@ msgstr "SSID" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:236 msgid "SWAP" -msgstr "Intercambio" +msgstr "SWAP" #: modules/luci-base/luasrc/view/cbi/error.htm:17 #: modules/luci-base/luasrc/view/cbi/footer.htm:26 @@ -4635,7 +4634,7 @@ msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" -"Configure las propiedades de la interfaz independientemente del operador de " +"Configura las propiedades de la interfaz independientemente del operador de " "enlace (si está configurado, los eventos de detección de operador no invocan " "los controladores de conexión en caliente)." @@ -4834,11 +4833,11 @@ msgstr "Arranque" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:12 msgid "Static IPv4 Routes" -msgstr "Rutas estáticas IPv4" +msgstr "Rutas IPv4 estáticas" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:59 msgid "Static IPv6 Routes" -msgstr "Rutas estáticas IPv6" +msgstr "Rutas IPv6 estáticas" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:269 msgid "Static Leases" @@ -4897,11 +4896,11 @@ msgstr "Suprimir el registro de la operación rutinaria de estos protocolos" #: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:24 msgid "Swap" -msgstr "Intercambio" +msgstr "Swap" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/swap.lua:29 msgid "Swap Entry" -msgstr "Entrada de intercambio" +msgstr "Entrada de Swap" #: modules/luci-mod-network/luasrc/controller/admin/network.lua:23 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:5 @@ -5271,7 +5270,7 @@ msgid "" "protect the web interface and enable SSH." msgstr "" "No hay contraseñas en este router. Por favor, configure una contraseña para " -"proteger el interfaz web y activar SSH." +"proteger el interfaz web y habilitar SSH." #: protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua:19 msgid "This IPv4 address of the relay" @@ -5356,7 +5355,7 @@ msgstr "" msgid "" "This list gives an overview over currently running system processes and " "their status." -msgstr "Procesos de sistema que se están ejecutando actualmente y su estado." +msgstr "Procesos del sistema que se están ejecutando actualmente y su estado." #: modules/luci-mod-status/luasrc/view/admin_status/connections.htm:312 msgid "This page gives an overview over currently active network connections." @@ -5908,7 +5907,7 @@ msgstr "WiFi en (%s)" #: modules/luci-base/luasrc/view/cbi/wireless_modefreq.htm:161 msgid "Width" -msgstr "Ancho" +msgstr "Ancho de banda" #: protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua:9 msgid "WireGuard VPN" @@ -5964,7 +5963,7 @@ msgstr "Red WiFi habilitada" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/dhcp.lua:138 msgid "Write received DNS requests to syslog" -msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema" +msgstr "Escribe las peticiones de DNS recibidas en el registro del sistema" #: modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua:89 msgid "Write system log to file" @@ -5993,7 +5992,7 @@ msgstr "" msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" -"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente." +"Debe habilitar JavaScript en su navegador o LuCI no funcionará correctamente." #: themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm:97 msgid "" @@ -6038,7 +6037,7 @@ msgstr "cualquiera" #: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:29 #: protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua:121 msgid "auto" -msgstr "auto" +msgstr "Auto" #: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45 msgid "baseT" @@ -6135,7 +6134,7 @@ msgstr "oculto" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:533 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:538 msgid "hybrid mode" -msgstr "modo híbrido" +msgstr "Modo híbrido" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/routes.lua:25 msgid "if target is a network" @@ -6196,7 +6195,7 @@ msgstr "minutos" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:43 msgid "mixed WPA/WPA2" -msgstr "WPA/WPA2 mezclado" +msgstr "WPA/WPA2 mixto" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:34 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua:225 @@ -6206,7 +6205,7 @@ msgstr "no" #: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:54 msgid "no link" -msgstr "sin enlace" +msgstr "Sin enlace" #: modules/luci-base/htdocs/luci-static/resources/cbi.js:273 msgid "non-empty value" @@ -6225,7 +6224,7 @@ msgstr "no presente" #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:225 #: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:270 msgid "off" -msgstr "parado" +msgstr "apagado" #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:184 #: themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm:132 @@ -6233,7 +6232,7 @@ msgstr "parado" #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:224 #: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:267 msgid "on" -msgstr "activo" +msgstr "encendido" #: modules/luci-base/htdocs/luci-static/resources/cbi.js:525 msgid "" @@ -6245,7 +6244,7 @@ msgstr "" #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:46 msgid "open" -msgstr "abierto" +msgstr "Abierto" #: modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm:46 msgid "output" @@ -6271,7 +6270,7 @@ msgstr "aleatorio" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:532 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:537 msgid "relay mode" -msgstr "modo relé" +msgstr "Modo relé" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:188 msgid "routed" @@ -6301,7 +6300,7 @@ msgstr "sin estado + con estado" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:344 msgid "tagged" -msgstr "marcado" +msgstr "Etiquetado" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:912 msgid "time units (TUs / 1.024 ms) [1000-65535]" @@ -6332,7 +6331,7 @@ msgstr "no especificado -o- crear:" #: modules/luci-mod-network/luasrc/model/cbi/admin_network/vlan.lua:341 msgid "untagged" -msgstr "desmarcado" +msgstr "Desetiquetado" #: modules/luci-base/htdocs/luci-static/resources/cbi.js:310 msgid "valid IP address" diff --git a/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua index 16d230c3dd..7b7fc0ffcf 100644 --- a/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua @@ -674,23 +674,44 @@ if hwtype == "mac80211" or hwtype == "prism2" then local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0) local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0) + -- Probe SAE support + local has_ap_sae = (os.execute("hostapd -vsae >/dev/null 2>/dev/null") == 0) + local has_sta_sae = (os.execute("wpa_supplicant -vsae >/dev/null 2>/dev/null") == 0) + + -- Probe OWE support + local has_ap_owe = (os.execute("hostapd -vowe >/dev/null 2>/dev/null") == 0) + local has_sta_owe = (os.execute("wpa_supplicant -vowe >/dev/null 2>/dev/null") == 0) + if hostapd and supplicant then encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("sae", "SAE", {mode="mesh"}) + if has_ap_sae and has_sta_sae then + encr:value("sae", "WPA3-SAE", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="mesh"}) + encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) + end if has_ap_eap and has_sta_eap then encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) end + if has_ap_owe and has_sta_owe then + encr:value("owe", "OWE", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) + end elseif hostapd and not supplicant then encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="ap-wds"}) encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="ap-wds"}) encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="ap-wds"}) + if has_ap_sae then + encr:value("sae", "WPA3-SAE", {mode="ap"}, {mode="ap-wds"}) + encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="ap"}, {mode="ap-wds"}) + end if has_ap_eap then encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="ap-wds"}) encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="ap-wds"}) end + if has_ap_owe then + encr:value("owe", "OWE", {mode="ap"}, {mode="ap-wds"}) + end encr.description = translate( "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. "and ad-hoc mode) to be installed." @@ -699,11 +720,17 @@ if hwtype == "mac80211" or hwtype == "prism2" then encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("sae", "SAE", {mode="mesh"}) + if has_sta_sae then + encr:value("sae", "WPA3-SAE", {mode="sta"}, {mode="sta-wds"}, {mode="mesh"}) + encr:value("sae-mixed", "WPA2-PSK/WPA3-SAE Mixed Mode", {mode="sta"}, {mode="sta-wds"}) + end if has_sta_eap then encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"}) encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"}) end + if has_sta_owe then + encr:value("owe", "OWE", {mode="sta"}, {mode="sta-wds"}) + end encr.description = translate( "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. "and ad-hoc mode) to be installed." @@ -797,6 +824,8 @@ wpakey:depends("encryption", "psk") wpakey:depends("encryption", "psk2") wpakey:depends("encryption", "psk+psk2") wpakey:depends("encryption", "psk-mixed") +wpakey:depends("encryption", "sae") +wpakey:depends("encryption", "sae-mixed") wpakey.datatype = "wpakey" wpakey.rmempty = true wpakey.password = true @@ -852,21 +881,6 @@ for slot=1,4 do end end -saekey = s:taboption("encryption", Value, "_sae_key", translate("Key")) -saekey:depends("encryption", "sae") -saekey.rmempty = true -saekey.datatype = "wpakey" -saekey.password = true - -saekey.cfgvalue = function(self, section, value) - local key = m.uci:get("wireless", section, "key") - return key -end - -saekey.write = function(self, section, value) - self.map.uci:set("wireless", section, "key", value) -end - if hwtype == "mac80211" or hwtype == "prism2" then -- Probe 802.11r support (and EAP support as a proxy for Openwrt) @@ -884,9 +898,13 @@ if hwtype == "mac80211" or hwtype == "prism2" then ieee80211r:depends({mode="ap", encryption="psk"}) ieee80211r:depends({mode="ap", encryption="psk2"}) ieee80211r:depends({mode="ap", encryption="psk-mixed"}) + ieee80211r:depends({mode="ap", encryption="sae"}) + ieee80211r:depends({mode="ap", encryption="sae-mixed"}) ieee80211r:depends({mode="ap-wds", encryption="psk"}) ieee80211r:depends({mode="ap-wds", encryption="psk2"}) ieee80211r:depends({mode="ap-wds", encryption="psk-mixed"}) + ieee80211r:depends({mode="ap-wds", encryption="sae"}) + ieee80211r:depends({mode="ap-wds", encryption="sae-mixed"}) end ieee80211r.rmempty = true @@ -1124,8 +1142,14 @@ if hwtype == "mac80211" then ieee80211w:depends({mode="ap-wds", encryption="wpa2"}) ieee80211w:depends({mode="ap", encryption="psk2"}) ieee80211w:depends({mode="ap", encryption="psk-mixed"}) + ieee80211w:depends({mode="ap", encryption="sae"}) + ieee80211w:depends({mode="ap", encryption="sae-mixed"}) + ieee80211w:depends({mode="ap", encryption="owe"}) ieee80211w:depends({mode="ap-wds", encryption="psk2"}) ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"}) + ieee80211w:depends({mode="ap-wds", encryption="sae"}) + ieee80211w:depends({mode="ap-wds", encryption="sae-mixed"}) + ieee80211w:depends({mode="ap-wds", encryption="owe"}) max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout", translate("802.11w maximum timeout"), @@ -1153,9 +1177,13 @@ if hwtype == "mac80211" then key_retries:depends({mode="ap", encryption="wpa2"}) key_retries:depends({mode="ap", encryption="psk2"}) key_retries:depends({mode="ap", encryption="psk-mixed"}) + key_retries:depends({mode="ap", encryption="sae"}) + key_retries:depends({mode="ap", encryption="sae-mixed"}) key_retries:depends({mode="ap-wds", encryption="wpa2"}) key_retries:depends({mode="ap-wds", encryption="psk2"}) key_retries:depends({mode="ap-wds", encryption="psk-mixed"}) + key_retries:depends({mode="ap-wds", encryption="sae"}) + key_retries:depends({mode="ap-wds", encryption="sae-mixed"}) end if hwtype == "mac80211" or hwtype == "prism2" then |