<?php
$arrData = array(
// "0x00010009 : admin",
// "0x00010010 : admin",
// "0x00010007 : adminisp",
// "0x00010008 : adminisp",
// "0x00040013 : 1",
// "0x00040014 : 36",
// "0x00040008 : 0",
// "0x00040004 : 2.4G-1;;2.4G-3;2.4G-4;5G-1;;5G-3;5G-4",
// "0x00040006 : 12345678;;32345678;42345678;12345678;12345678;12345678;12345678",
// "0x00040002 : 1;;1;1;1;1;1;1",
// "0x00040003 : 1;;1;1;1;1;1;1",
// "0x00040007 : 2;;2;2;2;2;2;2",
// "0x00050000 : 1",
// "0x00050001 : http://192.168.80.123:10301",
// "0x00050002 : username",
// "0x00050003 : password",
// "0x00050007 : 1",
// "0x00050008 : 600",
// "0x00050005 : cpe",
// "0x00050006 : cpe",
// "0x00050012 : /tr069\r",
// "0x00050013 : 7547",
// "0x00050014 : 1",
// "0x00050010 : ",
// "0x00050011 : 3478",
// "0x00050015 : stun",
// "0x00050016 : stun",
// "0x00060001 : 1",
// "0x00060004 : 1",
// "0x00060003 : 1",
// "0x00060000 : 1",
// "0x00060013 : 1",
// "0x00060015 : 1",
// "0x00060012 : 1",
// "0x00060024 : 23",
// "0x00060027 : 80",
// "0x00060026 : 443",
// "0x00030005 : 192.168.101.23",
// "0x00080008 : 255.255.255.0",
// "0x00080000 : 1",
// "0x00080002 : 255.255.255.0",
// "0x00080007 : 86400",
// "0x00080004 : 8.8.8.8",
// "0x00080005 : 192.168.101.1",
// "0x00080001 : 192.168.101.24-192.168.101.254",
'0x00030020 : {"WAN1":{"VLANMode":"tag","VLANID":100,"Priority":2,"ConnType":"ROUTE","WANCType":"IP","MTU":1500,"IgmpMldEnable":1,"MulticastVLANID":1001,"IPprotocol":1,"IsNAT":1,"DNS1":"1.1.1.1","DNS2":"8.8.8.8","PortBinding":4089},"WAN2":{"VLANMode":"tag","VLANID":200,"Priority":3,"ConnType":"ROUTE","WANCType":"PPPOE","MTU":1500,"IgmpMldEnable":1,"MulticastVLANID":1002,"IPprotocol":1,"IsNAT":1,"PPPoEUserName":"csb","PPPoEPassword":"csb","PPPoEACName":"","PPPoEServiceName":"","PortBinding":2166}}',
""
);
//print_r($arrData);
$arrLen = count($arrData);
// $string = "aaa;bbb;;;;ccc;";
// $arr = explode(';', $string); // 首先使用分号进行基本的分割
// print_r($arr);
// $finalArr = [];
// foreach ($arr as $key => $value) {
// $finalArr[] = $value;
// // 检查下一个元素是否存在且当前元素非空,如果不是最后一个且下一个也是空,则手动插入一个空字符串
// if ($key < count($arr) - 1 && $arr[$key + 1] === '') {
// $finalArr[] = '';
// }
// }
// print_r($finalArr);
// echo "\n";
$arrAccount = array();
$arrLan = array();
$arrAcl = array();
$arrRemote = array();
$arrWan = array();
$arrWlan = array();
$arrTotal = array();
$arrFinal = array();
for($i=0;$i<$arrLen;$i++) {
$prefix = substr($arrData[$i], 0, 10);
if(!empty($prefix)){
$subfix = substr($arrData[$i], 13);
// echo "prefix= ".$prefix.", subfix= ".$subfix."\n";
switch($prefix){
//account配置
case "0x00010009":
$arrAccount['username'] = $subfix;
break;
case "0x00010010":
$arrAccount['password'] = $subfix;
break;
case "0x00010007":
$arrAccount['susername'] = $subfix;
break;
case "0x00010008":
$arrAccount['spassword'] = $subfix;
break;
//lan配置
case "0x00030005":
$arrLan['lan_ip'] = $subfix;
break;
case "0x00080008":
$arrLan['lan_mask'] = $subfix;
break;
case "0x00080000":
$arrLan['dhcp_enable'] = intval($subfix);
break;
case "0x00080002":
$arrLan['dhcp_mask'] = $subfix;
break;
case "0x00080007":
$arrLan['max_lease_time'] = intval($subfix);
break;
case "0x00080004":
$arrLan['dns_primary'] = $subfix;
break;
case "0x00080005":
$arrLan['dns_secondary'] = $subfix;
break;
case "0x00080001":
$arrPool = explode("-", $subfix);
//print_r($arrPool);
$arrLan['dhcp_range_start'] = $arrPool[0];
$arrLan['dhcp_range_end'] = $arrPool[1];
break;
//tr069配置
case "0x00050000":
$arrRemote['tr069enable'] = intval($subfix);
break;
case "0x00050001":
$arrRemote['acsurl'] = $subfix;
break;
case "0x00050002":
$arrRemote['acsname'] = $subfix;
break;
case "0x00050003":
$arrRemote['acspasswd'] = $subfix;
break;
case "0x00050007":
$arrRemote['informenable'] = intval($subfix);
break;
case "0x00050008":
$arrRemote['informinterval'] = intval($subfix);
break;
case "0x00050005":
$arrRemote['cwmpname'] = $subfix;
break;
case "0x00050006":
$arrRemote['cwmppasswd'] = $subfix;
break;
case "0x00050012":
$arrRemote['cwmppath'] = $subfix;
break;
case "0x00050013":
$arrRemote['cwmpport'] = intval($subfix);
break;
case "0x00050014":
$arrRemote['stunenable'] = intval($subfix);
break;
case "0x00050010":
$arrRemote['stunaddr'] = $subfix;
break;
case "0x00050011":
$arrRemote['stunport'] = intval($subfix);
break;
case "0x00050015":
$arrRemote['stunname'] = $subfix;
break;
case "0x00050016":
$arrRemote['stunpasswd'] = $subfix;
break;
//acl配置
case "0x00060001":
$arrAcl['wan_telnet'] = intval($subfix);
break;
case "0x00060004":
$arrAcl['wan_http'] = intval($subfix);
break;
case "0x00060003":
$arrAcl['wan_https'] = intval($subfix);
break;
case "0x00060000":
$arrAcl['wan_ping'] = intval($subfix);
break;
case "0x00060013":
$arrAcl['lan_telnet'] = intval($subfix);
break;
case "0x00060016":
$arrAcl['lan_http'] = intval($subfix);
break;
case "0x00060012":
$arrAcl['lan_ping'] = intval($subfix);
break;
case "0x00060015":
$arrAcl['lan_https'] = intval($subfix);
break;
case "0x00060024":
$arrAcl['port_telnet'] = intval($subfix);
break;
case "0x00060027":
$arrAcl['port_http'] = intval($subfix);
break;
case "0x00060026":
$arrAcl['port_https'] = intval($subfix);
break;
//wlan配置
case "0x00040013":
$arrWlan['channel_24g'] = intval($subfix);
break;
case "0x00040014":
$arrWlan['channel_5g'] = intval($subfix);
break;
case "0x00040008":
$arrWlan['wps_enable'] = intval($subfix);
break;
case "0x00040004":
$arrSsid = explode(";", $subfix);
break;
case "0x00040006":
$arrSsidPassword = explode(";", $subfix);
break;
case "0x00040002":
$arrSsidEnable = explode(";", $subfix);
break;
case "0x00040003":
$arrSsidBroadcast = explode(";", $subfix);
break;
case "0x00040007":
$arrSsidEncryption = explode(";", $subfix);
break;
//wan配置
case "0x00030020":
$strUpWan = $subfix;
break;
default:
}
}
}
if(!empty($arrSsid) || !empty($arrSsidPassword) || !empty($arrSsidEnable) || !empty($arrSsidBroadcast) || !empty($arrSsidEncryption)) {
$arr24G = array();
$arr5G = array();
print_r($arrSsid);
print_r($arrSsidEnable);
for($j=0;$j<8;$j++){
$arrtmp = array();
if(!empty($arrSsid) && $arrSsid[$j] != '')
$arrtmp['ssid'] = $arrSsid[$j];
if(!empty($arrSsidPassword) && $arrSsidPassword[$j] != '')
$arrtmp['ssid_password'] = $arrSsidPassword[$j];
if(!empty($arrSsidEnable) && $arrSsidEnable[$j] != '')
$arrtmp['ssid_enable'] = $arrSsidEnable[$j];
if(!empty($arrSsidBroadcast) && $arrSsidBroadcast[$j] != '')
$arrtmp['ssid_broadcast'] = $arrSsidBroadcast[$j];
if(!empty($arrSsidEncryption) && $arrSsidEncryption[$j] != '')
$arrtmp['encryption'] = $arrSsidEncryption[$j];
// print_r($arrtmp);
if($j>=0 && $j<4){
array_push($arr24G, $arrtmp);
} else if($j>=4 && $j<8) {
array_push($arr5G, $arrtmp);
}
}
$arrWlan['2_4G'] = $arr24G;
$arrWlan['5G'] = $arr5G;
}
if(!empty($strUpWan)) {
// echo "\n----------------分割--------------------\n";
// var_dump(json_decode($strUpWan));
echo "----------------分割--------------------\n";
print_r(json_decode($strUpWan, true));
$decodeWan = json_decode($strUpWan, true);
$wanNum = count($decodeWan);
echo "wanNum= ".$wanNum."\n";
foreach($decodeWan as $key1 => $value1) {
echo "key1= ".$key1.", value1= ".$value1."\n";
$arrTmpWan = [];
$arrDns = [];
$arrPpp = [];
foreach($value1 as $key2 => $value2) {
echo "\tkey2= ".$key2.", value2= ".$value2."\n";
switch($key2) {
case "VLANMode":
if($value2 === "tag") {
$arrTmpWan['enable_vlan'] = 1;
} else if($value2 === "untag") {
$arrTmpWan['enable_vlan'] = 0;
}
break;
case "VLANID":
$arrTmpWan['vlanId'] = intval($value2);
break;
case "ConnType":
$connType = $value2;
break;
case "WANCType":
$wancType = $value2;
break;
case "Priority":
$arrTmpWan['priority'] = intval($value2);
break;
case "MTU":
$arrTmpWan['mtu'] = intval($value2);
break;
case "IgmpMldEnable":
$arrTmpWan['enable_igmp_mld_proxy'] = intval($value2);
break;
case "MulticastVLANID":
$arrTmpWan['multicast_vlan_id'] = intval($value2);
break;
case "IPprotocol":
$arrTmpWan['ip_protocol'] = intval($value2);
break;
case "IsNAT":
$arrTmpWan['enable_napt'] = intval($value2);
break;
case "ServList":
$arrTmpWan['connection_type'] = intval($value2);
break;
case "DNS1":
$arrDns['primaryDNS'] = $value2;
break;
case "DNS2":
$arrDns['slaveDNS'] = $value2;
break;
case "PPPoEUserName":
$arrPpp['username'] = $value2;
break;
case "PPPoEPassword":
$arrPpp['password'] = $value2;
break;
case "PPPoEACName":
$arrPpp['ac_name'] = $value2;
break;
case "PPPoEServiceName":
$arrPpp['service_name'] = $value2;
break;
case "PortBinding":
for($k=0;$k<12;$k++){
if(($value2 >> $k) & 1) {
$arrPortBingding[] = $k;
}
}
$arrTmpWan['port_binding'] = $arrPortBingding;
default:
}
}
if(!empty($connType)) {
if($connType == "BRIDGE") {
$arrTmpWan['service_type'] = 0;
} else if($connType == "ROUTE" && !empty($wancType)) {
if($wancType == "IP") {
$arrTmpWan['service_type'] = 1;
} else if($wancType == "PPPOE") {
$arrTmpWan['service_type'] = 2;
}
}
}
if(!empty($arrPpp)) {
$arrTmpWan['ppp'] = $arrPpp;
}
if(!empty($arrDns)) {
$arrDns['request_dns'] = 0;
$arrTmpWan['ipv4'] = $arrDns;
}
array_push($arrWan, $arrTmpWan);
}
echo "----------------分割--------------------\n";
}
if(!empty($arrAccount)){
$arrTotal['account'] = $arrAccount;
}
if(!empty($arrLan)){
$arrTotal['lan'] = $arrLan;
}
if(!empty($arrAcl)){
$arrTotal['acl'] = $arrAcl;
}
if(!empty($arrWlan)){
$arrTotal['wlan'] = $arrWlan;
}
if(!empty($arrWan)){
print_r($arrWan);
$arrTotal['wan'] = $arrWan;
}
if(!empty($arrRemote)){
$arrTotal['remote'] = $arrRemote;
}
$arrFinal['code'] = 0;
$arrFinal['data'] = $arrTotal;
print_r($arrFinal);
echo json_encode($arrFinal,JSON_UNESCAPED_UNICODE)."\n"; //JSON_UNESCAPED_UNICODE不编码中文