更新 simpleadmin/www/index.html

- Improved operator name detection logic with PLMN code priority
- Added fallback mechanism for hexadecimal encoded operator names
This commit is contained in:
sky 2024-12-07 20:14:28 +08:00
parent fa83b1b95e
commit 200a08e448

View File

@ -654,6 +654,122 @@
this.atcmd =
'AT+QTEMP;+QUIMSLOT?;+QSPN;+CGCONTRDP=1;+QMAP="WWANIP";+QENG="servingcell";+QCAINFO;+QSIMSTAT?;+CSQ;+QGDNRCNT?;+QGDCNT?';
// 定义运营商映射表 | Define operator mapping table
const operatorMap = {
// 中国大陆 (460) | Mainland China (460)
"46000": "中国移动 (CMCC)",
"46001": "中国联通 (CU)",
"46002": "中国移动 (CMCC)",
"46003": "中国电信 (CT)",
"46004": "中国移动 (CMCC)",
"46005": "中国电信 (CT)",
"46006": "中国联通 (CU)",
"46007": "中国移动 (CMCC)",
"46008": "中国移动 (CMCC)",
"46009": "中国联通 (CU)",
"46011": "中国电信 (CT)",
// 中国香港 (454) | Hong Kong, China (454)
"45400": "香港移动通讯 (CSL)",
"45401": "香港移动通讯 (CSL)",
"45402": "香港移动通讯 (CSL)",
"45403": "和记电讯 (3 HK)",
"45404": "和记电讯 (3 HK)",
"45405": "和记电讯 (3 HK)",
"45406": "数码通 (SmarTone)",
"45412": "中国移动香港 (CMHK)",
"45413": "中国移动香港 (CMHK)",
"45415": "数码通 (SmarTone)",
"45416": "香港电讯 (PCCW)",
"45417": "数码通 (SmarTone)",
"45419": "香港电讯 (PCCW)",
"45420": "香港电讯 (PCCW)",
// 中国澳门 (455) | Macau, China (455)
"45501": "澳门电讯 (CTM)",
"45502": "中国电信澳门 (CT Macau)",
"45503": "和记澳门 (3 Macau)",
"45505": "和记澳门 (3 Macau)",
"45506": "数码通澳门 (SmarTone Macau)",
// 美国 (310-316) | United States (310-316)
"310030": "AT&T Mobility",
"310070": "AT&T Mobility",
"310150": "AT&T Mobility",
"310170": "AT&T Mobility",
"310280": "AT&T Mobility",
"310410": "AT&T Mobility",
"310980": "AT&T Mobility",
"311180": "AT&T Mobility",
"310120": "Sprint",
"310260": "T-Mobile USA",
"310160": "T-Mobile USA",
"311480": "Verizon Wireless",
"310004": "Verizon Wireless",
"310012": "Verizon Wireless",
// 加拿大 (302) | Canada (302)
"302220": "Telus Mobility",
"302221": "Telus Mobility",
"302222": "Telus Mobility",
"302270": "EastLink",
"302320": "Rogers Wireless",
"302370": "Rogers Wireless",
"302720": "Rogers Wireless",
"302490": "Freedom Mobile",
"302500": "Videotron",
"302610": "Bell Mobility",
"302640": "Bell Mobility",
"302690": "Bell Mobility",
// 西班牙 (214) | Spain (214)
"21401": "Vodafone España",
"21403": "Orange España",
"21404": "Yoigo",
"21405": "Movistar España",
"21406": "Vodafone España",
"21407": "Movistar España",
"21408": "Euskaltel",
"21409": "Orange España",
// 日本 (440-441) | Japan (440-441)
"44000": "Y!mobile",
"44001": "NTT DOCOMO",
"44002": "NTT DOCOMO",
"44003": "NTT DOCOMO",
"44004": "SoftBank",
"44006": "SoftBank",
"44007": "KDDI (au)",
"44008": "KDDI (au)",
"44009": "NTT DOCOMO",
"44010": "NTT DOCOMO",
"44020": "SoftBank",
"44021": "NTT DOCOMO",
"44051": "KDDI (au)",
"44052": "KDDI (au)",
"44053": "KDDI (au)",
"44054": "KDDI (au)",
"44070": "KDDI (au)",
"44071": "KDDI (au)",
"44072": "KDDI (au)",
"44073": "KDDI (au)",
"44074": "KDDI (au)",
"44075": "KDDI (au)",
"44076": "KDDI (au)",
// 澳大利亚 (505) | Australia (505)
"50501": "Telstra",
"50502": "Optus",
"50503": "Vodafone Australia",
"50506": "Three Australia",
"50507": "Vodafone Australia",
"50508": "One.Tel",
"50512": "Three Australia",
"50571": "Telstra",
"50572": "Telstra",
"50590": "Optus"
};
fetch(
"/cgi-bin/get_atcommand?" +
new URLSearchParams({
@ -717,8 +833,13 @@
}
// --- Network Provider ---
// find this example value from lines "+QSPN: \"515 66\",\"515 66\",\"DITO\",0,\"51566\""
// remove any spaces
// 获取 PLMN 码 | Get PLMN code
const plmn = lines
.find((line) => line.includes("+QSPN:"))
.split(",")[4]
.replace(/"/g, "");
// 获取原始运营商名称 | Get original operator name
const network_provider = lines
.find((line) => line.includes("+QSPN:"))
.split(",")[0]
@ -726,16 +847,37 @@
.replace(/"/g, "")
.replace(/ /g, "");
// if network provider is composed of numbers and spaces, and no letters then use .split(",")[2]
if (network_provider.match(/^[0-9]+$/) != null) {
// 处理运营商名称显示 | Process operator name display
if (operatorMap[plmn]) {
// 如果在映射表中找到对应的运营商名称,直接使用
// If found in mapping table, use the mapped operator name
this.networkProvider = operatorMap[plmn];
} else if (network_provider.length === 24 && /^[0-9A-F]+$/i.test(network_provider)) {
// 如果是24位十六进制编码进行解码
// If it's a 24-bit hexadecimal encoding, decode it
this.networkProvider = hexToAscii(network_provider);
} else if (network_provider.match(/^[0-9]+$/) != null) {
// 如果是纯数字,使用 plmn_name
// If it's pure numbers, use plmn_name
this.networkProvider = lines
.find((line) => line.includes("+QSPN:"))
.split(",")[2]
.replace(/"/g, "");
} else {
// 其他情况直接使用原始名称
// For other cases, use the original name
this.networkProvider = network_provider;
}
// 十六进制解码函数 | Hexadecimal decoding function
function hexToAscii(hex) {
let ascii = '';
for (let i = 0; i < hex.length; i += 2) {
ascii += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
}
return ascii;
}
// --- MCCMNC ---
this.mccmnc = lines
.find((line) => line.includes("+QSPN:"))