更新 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:
parent
fa83b1b95e
commit
200a08e448
@ -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:"))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user