public String getRouterMac(String routerAcc, String routerPwd) { String httpLinkInfo_getRouterMac = "http://" + this.gateway + "/userRpm/MacCloneCfgRpm.htm"; String httpReceive_getRouterMac = ToGet(routerAcc, routerPwd, httpLinkInfo_getRouterMac); if (httpReceive_getRouterMac == null) { return(null); } String[] fragment_getRouterMac = httpReceive_getRouterMac.Split('"'); byte tm = 0; foreach (String a in fragment_getRouterMac) { if (tm == 1 && networkSup.IsMac(a)) { return(a); } if (networkSup.IsMac(a)) { tm++; } } return(null); }
//设置克隆Mac public override int setCloneMAC( String routerAcc, String routerPwd, String Mac //传入"router"为使用路由器地址 // "pc" 为使用本机MAC地址 //其余为指定MAC地址,格式用XX-XX-XX-XX-XX-XX //最后有个校验,如果不是这种格式,此函数将返回失败代码0 ) { String writeInLinkMac = null; String httpBody_getPPPOEOption = "{\"protocol\":{\"name\":[\"wan\",\"pppoe\"]},\"network\":{\"name\":[\"wan_status\",\"iface_mac\"]},\"method\":\"get\"}"; String httpReceive_getPPPOEOption = ToPost(getAbleLink(routerPwd), httpBody_getPPPOEOption); if (httpReceive_getPPPOEOption == null) //如果获取路由原有信息失败 { log.writeLog("router5 : setCloneMAC() 获取路由原有信息失败", log.msgType.error); return(0); } if (Mac.Equals("router")) //如果传入参数为"router" { writeInLinkMac = getJsonValue(httpReceive_getPPPOEOption, "factory"); } else if (Mac.Equals("pc")) //如果传入参数为"pc" { writeInLinkMac = getJsonValue(httpReceive_getPPPOEOption, "host"); } else { if (!networkSup.IsMac(Mac)) { //如果传入参数不是标准的Mac地址 log.writeLog("router5 : setCloneMAC() 传入了非标准mac", log.msgType.error); return(0); } } String httpbody_setMac = "{\"protocol\":{\"wan\":{\"macaddr\":\"" + writeInLinkMac + "\"}},\"method\":\"set\"}"; String httpReceive_setMac = ToPost(getAbleLink(routerPwd), httpbody_setMac); if (httpReceive_setMac.IndexOf("\"error_code\":0") != -1) { return(1); } else { log.writeLog("router5 : setCloneMAC() 服务器返回未成功字段", log.msgType.error); return(0); } }
//Mac验证所需控件合法性 private bool UI_macVerify() { if (!cloneMAC.Equals("pc") && !cloneMAC.Equals("router") && !netSup.IsMac(cloneMAC)) { pubFun_setText_simpleButton_showUser("请输入正确的MAC地址", Color.Red); return(false); } if (routerAcc == null || routerAcc.Equals("")) { pubFun_setText_simpleButton_showUser("路由管理员未填写", Color.Red); return(false); } if (routerPwd == null || routerPwd.Equals("")) { pubFun_setText_simpleButton_showUser("路由密码未填写", Color.Red); return(false); } return(true); }
public int setCloneMAC( String routerAcc, String routerPwd, String Mac //传入"router"为使用路由器地址 // "pc" 为使用本机MAC地址 //其余为指定MAC地址,格式用XX-XX-XX-XX-XX-XX //最后有个校验,如果不是这种格式,此函数将返回失败代码0 ) { String url_getRouterMac = "http://" + this.gateway + "/?code=2&asyn=0&id=" + getLinkStok(routerPwd); String body_getRouterMac = "1"; String receive_getRouterMac = ToPost(url_getRouterMac, body_getRouterMac); String lanMac = null; //Console.WriteLine("receive_getRouterMac:" + receive_getRouterMac); //Console.WriteLine("indexof: " + receive_getRouterMac.IndexOf("mac 0 ")); if (receive_getRouterMac != null) { lanMac = receive_getRouterMac.Substring(receive_getRouterMac.IndexOf("mac 0 ") + 6, 17); } //Console.WriteLine("routerMac:" + routerMac); if (!networkSup.IsMac(lanMac)) { log.writeLog("router3 : setCloneMAC() 获取路由MAC失败", log.msgType.error); return(0); } String url_getPcMac = "http://" + this.gateway + "/?code=8&asyn=0&id=" + getLinkStok(routerPwd); String body_getPcMac = ""; String receive_getPcMac = ToPost(url_getPcMac, body_getPcMac); String PcMac = null; PcMac = receive_getPcMac.Substring(receive_getPcMac.IndexOf(@"00000 ") + 7, 17); if (!networkSup.IsMac(PcMac)) { log.writeLog("router3 : setCloneMAC() 获取PC-MAC失败", log.msgType.error); return(0); } String writeInLinkMac = null; if (Mac.Equals("router")) { writeInLinkMac = getWanMac(lanMac); if (writeInLinkMac == null) { log.writeLog("router3 : setCloneMAC() writeInLinkMac错误", log.msgType.error); return(0); } } else if (Mac.Equals("pc")) { writeInLinkMac = PcMac; } else if (networkSup.IsMac(Mac)) { writeInLinkMac = Mac; } else { log.writeLog("router3 : setCloneMAC() Mac参数不合法", log.msgType.error); return(0); } String url_setCloneMac = "http://" + this.gateway + "/?code=1&asyn=0&id=" + getLinkStok(routerPwd); String body_setCloneMac = @"id 1 authKey " + encrypt(routerPwd, locaShort, locaLong) + @" setWzd 1 mode 0 logLevel 3 fastpath 1 mac 0 " + lanMac + @" mac 1 " + writeInLinkMac; String receive_setCloneMac = ToPost(url_setCloneMac, body_setCloneMac); Console.WriteLine("receive_setCloneMac:" + receive_setCloneMac); if (receive_setCloneMac.IndexOf("00000") != -1) { return(1); } log.writeLog("router3 : setCloneMAC() 服务器返回未成功字段", log.msgType.error); return(0); }