| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- async function apiGetRetry(url, retry = false) {
- try {
- const res = await fetch(url);
- if (!res.ok) {
- throw new Error("HTTP " + res.status);
- }
- const text = await res.text();
- if (!text || text.trim() === "") {
- throw new Error("empty response");
- }
- return text.trim();
- } catch (e) {
- console.log("GET failed:", url, e.message);
- if (retry) {
- setTimeout(() => apiGetRetry(url, true), 3000);
- }
- throw e;
- }
- }
- function getNetInfo1() {
- document.getElementById("text1").innerText = "";
- apiGetRetry("/api/network/interfaces")
- .then(data => {
- document.getElementById("text1").innerText = data;
- })
- .catch(() => {
- document.getElementById("text1").innerText = "获取失败";
- });
- }
- function getNetInfo2() {
- document.getElementById("text2").innerText = "";
- apiGetRetry("/api/network/routes")
- .then(data => {
- document.getElementById("text2").innerText = data;
- })
- .catch(() => {
- document.getElementById("text2").innerText = "获取失败";
- });
- }
- function getNetInfo3() {
- document.getElementById("text3").innerText = "";
-
- apiGetRetry("/api/network/dns")
- .then(data => {
- document.getElementById("text3").innerText = data;
- })
- .catch(() => {
- document.getElementById("text3").innerText = "获取失败";
- });
- }
- let netLogLevel = "";
- function setNetLogLevel() {
- const level = logLevel.value;
- fetch("/api/network/loglevel", {
- method: "POST",
- headers: {"Content-Type": "application/json"},
- body: JSON.stringify({level})
- })
- .then(async r => {
- if (!r.ok) throw new Error(await r.text());
- netLogLevel = level;
- })
- .catch(e => {
- logLevel.value = netLogLevel;
- });
- }
- function getNetLogLevel() {
- fetch("/api/network/loglevel")
- .then(async r => {
- if (!r.ok) throw new Error(await r.text());
- return r.json();
- })
- .then(d => {
- netLogLevel = d.log_level;
- logLevel.value = d.log_level;
- })
- .catch(e => {
- netLogLevel = "";
- logLevel.value = "";
- });
- }
- function downloadNetLogFile() {
- const btn = event.currentTarget;
- btn.disabled = true;
- fetch("/api/network/logfile")
- .then(async r => {
- if (!r.ok) {
- throw new Error("HTTP " + r.status);
- }
- const disposition = r.headers.get("Content-Disposition");
- let filename = "network.log.tar.gz";
- if (disposition) {
- const match = disposition.match(/filename="?([^";]+)"?/);
- if (match) {
- filename = match[1];
- }
- }
- return {
- blob: await r.blob(),
- filename
- };
- })
- .then(({ blob, filename }) => {
- const url = URL.createObjectURL(blob);
- const a = document.createElement("a");
- a.href = url;
- a.download = filename;
- document.body.appendChild(a);
- a.click();
- a.remove();
- setTimeout(() => {
- URL.revokeObjectURL(url);
- }, 1000);
- alert("下载成功");
- })
- .catch(e => {
- console.error("download failed:", e);
- alert("下载失败: " + e.message);
- })
- .finally(() => {
- btn.disabled = false;
- btn.textContent = "下载";
- });
- }
- function restartNetService() {
- if (!confirm("确定重启联网服务吗?")) {
- return;
- }
- const btn = event.currentTarget;
- btn.disabled = true;
- fetch("/api/network/restart", {
- method: "POST"
- })
- .then(async r => {
- if (!r.ok) {
- throw new Error(await r.text());
- }
- logLevel.value = "info";
- netLogLevel = logLevel.value;
- alert("重启成功");
- })
- .catch(e => {
- console.error("restart failed:", e);
- alert("重启失败: " + e.message);
- })
- .finally(() => {
- btn.disabled = false;
- });
- }
- let netStatusTimer = null;
- function getNetworkStatus() {
- fetch("/api/network/status")
- .then(async r => {
- if (!r.ok) {
- throw new Error("HTTP " + r.status);
- }
- return r.json();
- })
- .then(data => {
- document.getElementById("var1").textContent = data.var1 || "--";
- document.getElementById("var2").textContent = data.var2 || "--";
- document.getElementById("var3").textContent = data.var3 || "--";
- document.getElementById("var4").textContent = data.var4 || "--";
- document.getElementById("var5").textContent = data.var5 || "--";
- })
- .catch(e => {
- console.error("network status failed:", e);
- document.getElementById("var1").textContent = "--";
- document.getElementById("var2").textContent = "--";
- document.getElementById("var3").textContent = "--";
- document.getElementById("var4").textContent = "--";
- document.getElementById("var5").textContent = "--";
- });
- }
- function startNetStatusRefresh() {
- if (netStatusTimer) {
- return;
- }
- getNetworkStatus();
- netStatusTimer = setInterval(() => {
- getNetworkStatus();
- }, 5000);
- }
- function stopNetStatusRefresh() {
- if (netStatusTimer) {
- clearInterval(netStatusTimer);
- netStatusTimer = null;
- }
- }
- function initPage2() {
- startNetStatusRefresh();
- getNetInfo1();
- getNetInfo2();
- getNetInfo3();
- getNetLogLevel();
- connectLog("yfkj-networkd.service", "text4");
- }
- function exitPage2() {
- stopNetStatusRefresh();
- disconnectLog();
- }
|