diff --git a/server/src/main.cpp b/server/src/main.cpp index 22ebf1d..763d32a 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -245,7 +245,7 @@ void CMain::JSONUpdateThread(void *pUser) char aFileBuf[2048*NET_MAX_CLIENTS]; char *pBuf = aFileBuf; - str_format(pBuf, sizeof(aFileBuf), "{\n\"servers\": [\n"); + str_format(pBuf, sizeof(aFileBuf), "{\n\"servers\": {\n"); pBuf += strlen(pBuf); for(int i = 0; i < NET_MAX_CLIENTS; i++) @@ -278,7 +278,8 @@ void CMain::JSONUpdateThread(void *pUser) } str_format(pBuf, sizeof(aFileBuf) - (pBuf - aFileBuf), - "{ \"name\": \"%s\",\"type\": \"%s\",\"host\": \"%s\",\"location\": \"%s\",\"online4\": %s, \"online6\": %s, \"uptime\": \"%s\",\"load_1\": %.2f, \"load_5\": %.2f, \"load_15\": %.2f,\"ping_10010\": %.2f, \"ping_189\": %.2f, \"ping_10086\": %.2f,\"time_10010\": %" PRId64 ", \"time_189\": %" PRId64 ", \"time_10086\": %" PRId64 ", \"tcp_count\": %" PRId64 ", \"udp_count\": %" PRId64 ", \"process_count\": %" PRId64 ", \"thread_count\": %" PRId64 ", \"network_rx\": %" PRId64 ", \"network_tx\": %" PRId64 ", \"network_in\": %" PRId64 ", \"network_out\": %" PRId64 ", \"cpu\": %d, \"memory_total\": %" PRId64 ", \"memory_used\": %" PRId64 ", \"swap_total\": %" PRId64 ", \"swap_used\": %" PRId64 ", \"hdd_total\": %" PRId64 ", \"hdd_used\": %" PRId64 ", \"last_network_in\": %" PRId64 ", \"last_network_out\": %" PRId64 ",\"io_read\": %" PRId64 ", \"io_write\": %" PRId64 ",\"custom\": \"%s\" },\n", + "\"%s\":{ \"name\": \"%s\",\"type\": \"%s\",\"host\": \"%s\",\"location\": \"%s\",\"online4\": %s, \"online6\": %s, \"uptime\": \"%s\",\"load_1\": %.2f, \"load_5\": %.2f, \"load_15\": %.2f,\"ping_10010\": %.2f, \"ping_189\": %.2f, \"ping_10086\": %.2f,\"time_10010\": %" PRId64 ", \"time_189\": %" PRId64 ", \"time_10086\": %" PRId64 ", \"tcp_count\": %" PRId64 ", \"udp_count\": %" PRId64 ", \"process_count\": %" PRId64 ", \"thread_count\": %" PRId64 ", \"network_rx\": %" PRId64 ", \"network_tx\": %" PRId64 ", \"network_in\": %" PRId64 ", \"network_out\": %" PRId64 ", \"cpu\": %d, \"memory_total\": %" PRId64 ", \"memory_used\": %" PRId64 ", \"swap_total\": %" PRId64 ", \"swap_used\": %" PRId64 ", \"hdd_total\": %" PRId64 ", \"hdd_used\": %" PRId64 ", \"last_network_in\": %" PRId64 ", \"last_network_out\": %" PRId64 ",\"io_read\": %" PRId64 ", \"io_write\": %" PRId64 ",\"custom\": \"%s\" },\n", + pClients[i].m_aUsername, pClients[i].m_aName,pClients[i].m_aType,pClients[i].m_aHost,pClients[i].m_aLocation, pClients[i].m_Stats.m_Online4 ? "true" : "false",pClients[i].m_Stats.m_Online6 ? "true" : "false", aUptime, pClients[i].m_Stats.m_Load_1, pClients[i].m_Stats.m_Load_5, pClients[i].m_Stats.m_Load_15, pClients[i].m_Stats.m_ping_10010, pClients[i].m_Stats.m_ping_189, pClients[i].m_Stats.m_ping_10086, @@ -295,16 +296,16 @@ void CMain::JSONUpdateThread(void *pUser) { // sava network traffic record to json when close client // last_network_in == last network in record, last_network_out == last network out record - str_format(pBuf, sizeof(aFileBuf) - (pBuf - aFileBuf), "{ \"name\": \"%s\", \"type\": \"%s\", \"host\": \"%s\", \"location\": \"%s\", \"online4\": false, \"online6\": false, \"last_network_in\": %" PRId64 ", \"last_network_out\": %" PRId64 " },\n", + str_format(pBuf, sizeof(aFileBuf) - (pBuf - aFileBuf), "\"%s\":{ \"name\": \"%s\", \"type\": \"%s\", \"host\": \"%s\", \"location\": \"%s\", \"online4\": false, \"online6\": false, \"last_network_in\": %" PRId64 ", \"last_network_out\": %" PRId64 " },\n",pClients[i].m_aUsername, pClients[i].m_aName, pClients[i].m_aType, pClients[i].m_aHost, pClients[i].m_aLocation, pClients[i].m_LastNetworkIN, pClients[i].m_LastNetworkOUT); pBuf += strlen(pBuf); } } if(!m_pJSONUpdateThreadData->m_ReloadRequired) - str_format(pBuf - 2, sizeof(aFileBuf) - (pBuf - aFileBuf), "\n],\n\"updated\": \"%lld\"\n}", (long long)time(/*ago*/0)); + str_format(pBuf - 2, sizeof(aFileBuf) - (pBuf - aFileBuf), "\n},\n\"updated\": \"%lld\"\n}", (long long)time(/*ago*/0)); else { - str_format(pBuf - 2, sizeof(aFileBuf) - (pBuf - aFileBuf), "\n],\n\"updated\": \"%lld\",\n\"reload\": true\n}", (long long)time(/*ago*/0)); + str_format(pBuf - 2, sizeof(aFileBuf) - (pBuf - aFileBuf), "\n},\n\"updated\": \"%lld\",\n\"reload\": true\n}", (long long)time(/*ago*/0)); m_pJSONUpdateThreadData->m_ReloadRequired--; } pBuf += strlen(pBuf); @@ -442,17 +443,11 @@ int CMain::ReadConfig() { if(ID < 0 || ID >= NET_MAX_CLIENTS) continue; - for(unsigned j = 0; j < cStart.u.array.length; j++) + char *uName = rStart[i]["username"].u.string.ptr; + if(strlen(cStart[uName]["name"]) != 0) { - if(strcmp(Client(ID)->m_aName, cStart[j]["name"].u.string.ptr)==0 && - strcmp(Client(ID)->m_aType, cStart[j]["type"].u.string.ptr)==0 && - strcmp(Client(ID)->m_aHost, cStart[j]["host"].u.string.ptr)==0 && - strcmp(Client(ID)->m_aLocation, cStart[j]["location"].u.string.ptr)==0) - { - Client(ID)->m_LastNetworkIN = cStart[j]["last_network_in"].u.integer; - Client(ID)->m_LastNetworkOUT = cStart[j]["last_network_out"].u.integer; - break; - } + Client(ID)->m_LastNetworkIN = cStart[uName]["last_network_in"].u.integer; + Client(ID)->m_LastNetworkOUT = cStart[uName]["last_network_out"].u.integer; } ID++; } diff --git a/web/js/serverstatus.js b/web/js/serverstatus.js index 9b34d96..0fc9e27 100644 --- a/web/js/serverstatus.js +++ b/web/js/serverstatus.js @@ -4,7 +4,7 @@ var d = 0; var server_status = new Array(); function timeSince(date) { - if(date == 0) + if (date == 0) return "从未."; var seconds = Math.floor((new Date() - date) / 1000); @@ -15,11 +15,10 @@ function timeSince(date) { return "几秒前."; } -function bytesToSize(bytes, precision, si) -{ +function bytesToSize(bytes, precision, si) { var ret; si = typeof si !== 'undefined' ? si : 0; - if(si != 0) { + if (si != 0) { var megabyte = 1000 * 1000; var gigabyte = megabyte * 1000; var terabyte = gigabyte * 1000; @@ -50,40 +49,41 @@ function bytesToSize(bytes, precision, si) } function uptime() { - $.getJSON("json/stats.json", function(result) { + $.getJSON("json/stats.json", function (result) { $("#loading-notice").remove(); - if(result.reload) - setTimeout(function() { location.reload() }, 1000); + if (result.reload) + setTimeout(function () { location.reload() }, 1000); - for (var i = 0, rlen=result.servers.length; i < rlen; i++) { + let i = 0; + for (let key in result.servers) { var TableRow = $("#servers tr#r" + i); var ExpandRow = $("#servers #rt" + i); var hack; // fuck CSS for making me do this - if(i%2) hack="odd"; else hack="even"; + if (i % 2) hack = "odd"; else hack = "even"; if (!TableRow.length) { $("#servers").append( "<tr id=\"r" + i + "\" data-toggle=\"collapse\" data-target=\"#rt" + i + "\" class=\"accordion-toggle " + hack + "\">" + - "<td id=\"online_status\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + - "<td id=\"month_traffic\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + - "<td id=\"name\">加载中</td>" + - "<td id=\"type\">加载中</td>" + - "<td id=\"location\">加载中</td>" + - "<td id=\"uptime\">加载中</td>" + - "<td id=\"load\">加载中</td>" + - "<td id=\"network\">加载中</td>" + - "<td id=\"traffic\">加载中</td>" + - "<td id=\"cpu\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + - "<td id=\"memory\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + - "<td id=\"hdd\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + - "<td id=\"ping\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"online_status\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"month_traffic\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"name\">加载中</td>" + + "<td id=\"type\">加载中</td>" + + "<td id=\"location\">加载中</td>" + + "<td id=\"uptime\">加载中</td>" + + "<td id=\"load\">加载中</td>" + + "<td id=\"network\">加载中</td>" + + "<td id=\"traffic\">加载中</td>" + + "<td id=\"cpu\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"memory\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"hdd\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + + "<td id=\"ping\"><div class=\"progress\"><div style=\"width: 100%;\" class=\"progress-bar progress-bar-warning\"><small>加载中</small></div></div></td>" + "</tr>" + "<tr class=\"expandRow " + hack + "\"><td colspan=\"16\"><div class=\"accordian-body collapse\" id=\"rt" + i + "\">" + - "<div id=\"expand_mem\">加载中</div>" + - "<div id=\"expand_swap\">加载中</div>" + - "<div id=\"expand_hdd\">加载中</div>" + - "<div id=\"expand_tupd\">加载中</div>" + - "<div id=\"expand_ping\">加载中</div>" + - "<div id=\"expand_custom\">加载中</div>" + + "<div id=\"expand_mem\">加载中</div>" + + "<div id=\"expand_swap\">加载中</div>" + + "<div id=\"expand_hdd\">加载中</div>" + + "<div id=\"expand_tupd\">加载中</div>" + + "<div id=\"expand_ping\">加载中</div>" + + "<div id=\"expand_custom\">加载中</div>" + "</div></td></tr>" ); TableRow = $("#servers tr#r" + i); @@ -91,20 +91,20 @@ function uptime() { server_status[i] = true; } TableRow = TableRow[0]; - if(error) { + if (error) { TableRow.setAttribute("data-target", "#rt" + i); server_status[i] = true; } // online_status - if (result.servers[i].online4 && !result.servers[i].online6) { + if (result.servers[key].online4 && !result.servers[key].online6) { TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-success"; TableRow.children["online_status"].children[0].children[0].innerHTML = "<small>IPv4</small>"; - } else if (result.servers[i].online4 && result.servers[i].online6) { + } else if (result.servers[key].online4 && result.servers[key].online6) { TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-success"; TableRow.children["online_status"].children[0].children[0].innerHTML = "<small>双栈</small>"; - } else if (!result.servers[i].online4 && result.servers[i].online6) { - TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-success"; + } else if (!result.servers[key].online4 && result.servers[key].online6) { + TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-success"; TableRow.children["online_status"].children[0].children[0].innerHTML = "<small>IPv6</small>"; } else { TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-danger"; @@ -112,20 +112,20 @@ function uptime() { } // Name - TableRow.children["name"].innerHTML = result.servers[i].name; + TableRow.children["name"].innerHTML = result.servers[key].name; // Type - TableRow.children["type"].innerHTML = result.servers[i].type; + TableRow.children["type"].innerHTML = result.servers[key].type; // Location - TableRow.children["location"].innerHTML = result.servers[i].location; - if (!result.servers[i].online4 && !result.servers[i].online6) { + TableRow.children["location"].innerHTML = result.servers[key].location; + if (!result.servers[key].online4 && !result.servers[key].online6) { if (server_status[i]) { TableRow.children["uptime"].innerHTML = "–"; TableRow.children["load"].innerHTML = "–"; TableRow.children["network"].innerHTML = "–"; TableRow.children["traffic"].innerHTML = "–"; - TableRow.children["month_traffic"].children[0].children[0].className = "progress-bar progress-bar-warning"; + TableRow.children["month_traffic"].children[0].children[0].className = "progress-bar progress-bar-danger"; TableRow.children["month_traffic"].children[0].children[0].innerHTML = "<small>关闭</small>"; TableRow.children["cpu"].children[0].children[0].className = "progress-bar progress-bar-danger"; TableRow.children["cpu"].children[0].children[0].style.width = "100%"; @@ -139,7 +139,7 @@ function uptime() { TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-danger"; TableRow.children["ping"].children[0].children[0].style.width = "100%"; TableRow.children["ping"].children[0].children[0].innerHTML = "<small>关闭</small>"; - if(ExpandRow.hasClass("in")) { + if (ExpandRow.hasClass("in")) { ExpandRow.collapse("hide"); } TableRow.setAttribute("data-target", ""); @@ -153,68 +153,68 @@ function uptime() { // month traffic var monthtraffic = ""; - var trafficdiff_in = result.servers[i].network_in - result.servers[i].last_network_in; - var trafficdiff_out = result.servers[i].network_out - result.servers[i].last_network_out; - if(trafficdiff_in < 1024*1024*1024*1024) - monthtraffic += (trafficdiff_in/1024/1024/1024).toFixed(1) + "G"; + var trafficdiff_in = result.servers[key].network_in - result.servers[key].last_network_in; + var trafficdiff_out = result.servers[key].network_out - result.servers[key].last_network_out; + if (trafficdiff_in < 1024 * 1024 * 1024 * 1024) + monthtraffic += (trafficdiff_in / 1024 / 1024 / 1024).toFixed(1) + "G"; else - monthtraffic += (trafficdiff_in/1024/1024/1024/1024).toFixed(1) + "T"; + monthtraffic += (trafficdiff_in / 1024 / 1024 / 1024 / 1024).toFixed(1) + "T"; monthtraffic += " | " - if(trafficdiff_out < 1024*1024*1024*1024) - monthtraffic += (trafficdiff_out/1024/1024/1024).toFixed(1) + "G"; + if (trafficdiff_out < 1024 * 1024 * 1024 * 1024) + monthtraffic += (trafficdiff_out / 1024 / 1024 / 1024).toFixed(1) + "G"; else - monthtraffic += (trafficdiff_out/1024/1024/1024/1024).toFixed(1) + "T"; + monthtraffic += (trafficdiff_out / 1024 / 1024 / 1024 / 1024).toFixed(1) + "T"; TableRow.children["month_traffic"].children[0].children[0].className = "progress-bar progress-bar-success"; - TableRow.children["month_traffic"].children[0].children[0].innerHTML = "<small>"+monthtraffic+"</small>"; + TableRow.children["month_traffic"].children[0].children[0].innerHTML = "<small>" + monthtraffic + "</small>"; // Uptime - TableRow.children["uptime"].innerHTML = result.servers[i].uptime; + TableRow.children["uptime"].innerHTML = result.servers[key].uptime; // Load: default load_1, you can change show: load_1, load_5, load_15 - if(result.servers[i].load == -1) { - TableRow.children["load"].innerHTML = "–"; + if (result.servers[key].load == -1) { + TableRow.children["load"].innerHTML = "–"; } else { - TableRow.children["load"].innerHTML = result.servers[i].load_1.toFixed(2); + TableRow.children["load"].innerHTML = result.servers[key].load_1.toFixed(2); } // Network var netstr = ""; - if(result.servers[i].network_rx < 1024*1024) - netstr += (result.servers[i].network_rx/1024).toFixed(1) + "K"; + if (result.servers[key].network_rx < 1024 * 1024) + netstr += (result.servers[key].network_rx / 1024).toFixed(1) + "K"; else - netstr += (result.servers[i].network_rx/1024/1024).toFixed(1) + "M"; + netstr += (result.servers[key].network_rx / 1024 / 1024).toFixed(1) + "M"; netstr += " | " - if(result.servers[i].network_tx < 1024*1024) - netstr += (result.servers[i].network_tx/1024).toFixed(1) + "K"; + if (result.servers[key].network_tx < 1024 * 1024) + netstr += (result.servers[key].network_tx / 1024).toFixed(1) + "K"; else - netstr += (result.servers[i].network_tx/1024/1024).toFixed(1) + "M"; + netstr += (result.servers[key].network_tx / 1024 / 1024).toFixed(1) + "M"; TableRow.children["network"].innerHTML = netstr; //Traffic var trafficstr = ""; - if(result.servers[i].network_in < 1024*1024*1024*1024) - trafficstr += (result.servers[i].network_in/1024/1024/1024).toFixed(1) + "G"; - else - trafficstr += (result.servers[i].network_in/1024/1024/1024/1024).toFixed(1) + "T"; - trafficstr += " | " - if(result.servers[i].network_out < 1024*1024*1024*1024) - trafficstr += (result.servers[i].network_out/1024/1024/1024).toFixed(1) + "G"; + if (result.servers[key].network_in < 1024 * 1024 * 1024 * 1024) + trafficstr += (result.servers[key].network_in / 1024 / 1024 / 1024).toFixed(1) + "G"; else - trafficstr += (result.servers[i].network_out/1024/1024/1024/1024).toFixed(1) + "T"; + trafficstr += (result.servers[key].network_in / 1024 / 1024 / 1024 / 1024).toFixed(1) + "T"; + trafficstr += " | " + if (result.servers[key].network_out < 1024 * 1024 * 1024 * 1024) + trafficstr += (result.servers[key].network_out / 1024 / 1024 / 1024).toFixed(1) + "G"; + else + trafficstr += (result.servers[key].network_out / 1024 / 1024 / 1024 / 1024).toFixed(1) + "T"; TableRow.children["traffic"].innerHTML = trafficstr; // CPU - if (result.servers[i].cpu >= 90) + if (result.servers[key].cpu >= 90) TableRow.children["cpu"].children[0].children[0].className = "progress-bar progress-bar-danger"; - else if (result.servers[i].cpu >= 80) + else if (result.servers[key].cpu >= 80) TableRow.children["cpu"].children[0].children[0].className = "progress-bar progress-bar-warning"; else TableRow.children["cpu"].children[0].children[0].className = "progress-bar progress-bar-success"; - TableRow.children["cpu"].children[0].children[0].style.width = result.servers[i].cpu + "%"; - TableRow.children["cpu"].children[0].children[0].innerHTML = result.servers[i].cpu + "%"; + TableRow.children["cpu"].children[0].children[0].style.width = result.servers[key].cpu + "%"; + TableRow.children["cpu"].children[0].children[0].innerHTML = result.servers[key].cpu + "%"; // Memory - var Mem = ((result.servers[i].memory_used/result.servers[i].memory_total)*100.0).toFixed(0); + var Mem = ((result.servers[key].memory_used / result.servers[key].memory_total) * 100.0).toFixed(0); if (Mem >= 90) TableRow.children["memory"].children[0].children[0].className = "progress-bar progress-bar-danger"; else if (Mem >= 80) @@ -223,12 +223,12 @@ function uptime() { TableRow.children["memory"].children[0].children[0].className = "progress-bar progress-bar-success"; TableRow.children["memory"].children[0].children[0].style.width = Mem + "%"; TableRow.children["memory"].children[0].children[0].innerHTML = Mem + "%"; - ExpandRow[0].children["expand_mem"].innerHTML = "内存: " + bytesToSize(result.servers[i].memory_used*1024, 2) + " / " + bytesToSize(result.servers[i].memory_total*1024, 2); + ExpandRow[0].children["expand_mem"].innerHTML = "内存: " + bytesToSize(result.servers[key].memory_used * 1024, 2) + " / " + bytesToSize(result.servers[key].memory_total * 1024, 2); // Swap - ExpandRow[0].children["expand_swap"].innerHTML = "交换分区: " + bytesToSize(result.servers[i].swap_used*1024, 2) + " / " + bytesToSize(result.servers[i].swap_total*1024, 2); + ExpandRow[0].children["expand_swap"].innerHTML = "交换分区: " + bytesToSize(result.servers[key].swap_used * 1024, 2) + " / " + bytesToSize(result.servers[key].swap_total * 1024, 2); // HDD - var HDD = ((result.servers[i].hdd_used/result.servers[i].hdd_total)*100.0).toFixed(0); + var HDD = ((result.servers[key].hdd_used / result.servers[key].hdd_total) * 100.0).toFixed(0); if (HDD >= 90) TableRow.children["hdd"].children[0].children[0].className = "progress-bar progress-bar-danger"; else if (HDD >= 80) @@ -240,48 +240,49 @@ function uptime() { // IO Speed for HDD. // IO, 过小的B字节单位没有意义 var io = ""; - if(result.servers[i].io_read < 1024*1024) - io += parseInt(result.servers[i].io_read/1024) + "K"; + if (result.servers[key].io_read < 1024 * 1024) + io += parseInt(result.servers[key].io_read / 1024) + "K"; else - io += parseInt(result.servers[i].io_read/1024/1024) + "M"; + io += parseInt(result.servers[key].io_read / 1024 / 1024) + "M"; io += " / " - if(result.servers[i].io_write < 1024*1024) - io += parseInt(result.servers[i].io_write/1024) + "K"; + if (result.servers[key].io_write < 1024 * 1024) + io += parseInt(result.servers[key].io_write / 1024) + "K"; else - io += parseInt(result.servers[i].io_write/1024/1024) + "M"; + io += parseInt(result.servers[key].io_write / 1024 / 1024) + "M"; // Expand for HDD. - ExpandRow[0].children["expand_hdd"].innerHTML = "硬盘|读写: " + bytesToSize(result.servers[i].hdd_used*1024*1024, 2) + " / " + bytesToSize(result.servers[i].hdd_total*1024*1024, 2) + " | " + io; + ExpandRow[0].children["expand_hdd"].innerHTML = "硬盘|读写: " + bytesToSize(result.servers[key].hdd_used * 1024 * 1024, 2) + " / " + bytesToSize(result.servers[key].hdd_total * 1024 * 1024, 2) + " | " + io; - // delay time + // delay time // tcp, udp, process, thread count - ExpandRow[0].children["expand_tupd"].innerHTML = "TCP/UDP/进/线: " + result.servers[i].tcp_count + " / " + result.servers[i].udp_count + " / " + result.servers[i].process_count+ " / " + result.servers[i].thread_count; - ExpandRow[0].children["expand_ping"].innerHTML = "联通/电信/移动: " + result.servers[i].time_10010 + "ms / " + result.servers[i].time_189 + "ms / " + result.servers[i].time_10086 + "ms" + ExpandRow[0].children["expand_tupd"].innerHTML = "TCP/UDP/进/线: " + result.servers[key].tcp_count + " / " + result.servers[key].udp_count + " / " + result.servers[key].process_count + " / " + result.servers[key].thread_count; + ExpandRow[0].children["expand_ping"].innerHTML = "联通/电信/移动: " + result.servers[key].time_10010 + "ms / " + result.servers[key].time_189 + "ms / " + result.servers[key].time_10086 + "ms" - // ping - var PING_10010 = result.servers[i].ping_10010.toFixed(0); - var PING_189 = result.servers[i].ping_189.toFixed(0); - var PING_10086 = result.servers[i].ping_10086.toFixed(0); - if (PING_10010 >= 20 || PING_189 >= 20 || PING_10086 >= 20) - TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-warning"; - else - TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-success"; - TableRow.children["ping"].children[0].children[0].innerHTML = PING_10010 + "%💻" + PING_189 + "%💻" + PING_10086 + "%"; + // ping + var PING_10010 = result.servers[key].ping_10010.toFixed(0); + var PING_189 = result.servers[key].ping_189.toFixed(0); + var PING_10086 = result.servers[key].ping_10086.toFixed(0); + if (PING_10010 >= 70 || PING_189 >= 70 || PING_10086 >= 70) + TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-warning"; + else + TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-success"; + TableRow.children["ping"].children[0].children[0].innerHTML = PING_10010 + "-" + PING_189 + "-" + PING_10086 + ""; // Custom - if (result.servers[i].custom) { - ExpandRow[0].children["expand_custom"].innerHTML = result.servers[i].custom + if (result.servers[key].custom) { + ExpandRow[0].children["expand_custom"].innerHTML = result.servers[key].custom } else { ExpandRow[0].children["expand_custom"].innerHTML = "" } } + i++; }; - d = new Date(result.updated*1000); + d = new Date(result.updated * 1000); error = 0; - }).fail(function(update_error) { + }).fail(function (update_error) { if (!error) { - $("#servers > tr.accordion-toggle").each(function(i) { + $("#servers > tr.accordion-toggle").each(function (i) { var TableRow = $("#servers tr#r" + i)[0]; var ExpandRow = $("#servers #rt" + i); TableRow.children["online_status"].children[0].children[0].className = "progress-bar progress-bar-error"; @@ -308,7 +309,7 @@ function uptime() { TableRow.children["ping"].children[0].children[0].className = "progress-bar progress-bar-error"; TableRow.children["ping"].children[0].children[0].style.width = "100%"; TableRow.children["ping"].children[0].children[0].innerHTML = "<small>错误</small>"; - if(ExpandRow.hasClass("in")) { + if (ExpandRow.hasClass("in")) { ExpandRow.collapse("hide"); } TableRow.setAttribute("data-target", ""); @@ -332,65 +333,65 @@ setInterval(updateTime, 2000); // styleswitcher.js -function setActiveStyleSheet(title, cookie=false) { - var i, a, main; - for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { - if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { - a.disabled = true; - if(a.getAttribute("title") == title) a.disabled = false; - } - } - if (true==cookie) { - createCookie("style", title, 365); - } +function setActiveStyleSheet(title, cookie = false) { + var i, a, main; + for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) { + if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { + a.disabled = true; + if (a.getAttribute("title") == title) a.disabled = false; + } + } + if (true == cookie) { + createCookie("style", title, 365); + } } function getActiveStyleSheet() { var i, a; - for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { - if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) + for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) { + if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } return null; } -function createCookie(name,value,days) { +function createCookie(name, value, days) { if (days) { var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + var expires = "; expires=" + date.toGMTString(); } else expires = ""; - document.cookie = name+"="+value+expires+"; path=/"; + document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { + for (var i = 0; i < ca.length; i++) { var c = ca[i]; - while (c.charAt(0)==' ') - c = c.substring(1,c.length); + while (c.charAt(0) == ' ') + c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) - return c.substring(nameEQ.length,c.length); + return c.substring(nameEQ.length, c.length); } return null; } -window.onload = function(e) { - var cookie = readCookie("style"); - if (cookie && cookie != 'null' ) { - setActiveStyleSheet(cookie); - } else { - function handleChange (mediaQueryListEvent) { - if (mediaQueryListEvent.matches) { - setActiveStyleSheet('dark'); - } else { - setActiveStyleSheet('light'); - } - } - const mediaQueryListDark = window.matchMedia('(prefers-color-scheme: dark)'); - setActiveStyleSheet(mediaQueryListDark.matches ? 'dark' : 'light'); - mediaQueryListDark.addEventListener("change",handleChange); - } +window.onload = function (e) { + var cookie = readCookie("style"); + if (cookie && cookie != 'null') { + setActiveStyleSheet(cookie); + } else { + function handleChange(mediaQueryListEvent) { + if (mediaQueryListEvent.matches) { + setActiveStyleSheet('dark'); + } else { + setActiveStyleSheet('light'); + } + } + const mediaQueryListDark = window.matchMedia('(prefers-color-scheme: dark)'); + setActiveStyleSheet(mediaQueryListDark.matches ? 'dark' : 'light'); + mediaQueryListDark.addEventListener("change", handleChange); + } }