/// <summary> /// POST request method /// </summary> /// <param name="ip_address"></param> /// <param name="data"></param> /// <param name="api_type"></param> /// <returns></returns> internal static XmlDocument POST_internal(string ip_address, string data, string api_type) { XmlDocument doc = new XmlDocument(); var wc = GET_WebClient(); try { var response = wc.UploadData("http://" + ip_address + "/" + api_type, Encoding.UTF8.GetBytes(data)); var responseString = Encoding.Default.GetString(response); HandleHeaders(wc); doc.LoadXml(responseString); if (doc.OuterXml.ToString() == string.Empty) { Console.WriteLine("No response from router."); } else if (XMLTool.Beautify(doc).Contains("OK")) { foreach (XmlNode node in doc.DocumentElement) { //Console.WriteLine(node.Name + " : " + node.InnerText); } } else if (doc.OuterXml.ToString().Contains("error")) { Console.WriteLine("ERROR " + doc.SelectSingleNode("//error/code").InnerText.ToString() + " : " + ((ErrorCode)(int.Parse(doc.SelectSingleNode("//error/code").InnerText))).ToString()); } } catch { } return(doc); }
public static XmlDocument POST(string ip_address, string data, string api_type) { Console.WriteLine("Sending POST request to " + api_type + ".."); //get session id n token var Sestoken = GET_internal(ip_address, "api/webserver/SesTokInfo"); _CurrentSessionID = Sestoken.SelectSingleNode("//response/SesInfo").InnerText; _CurrentToken = Sestoken.SelectSingleNode("//response/TokInfo").InnerText; XmlDocument doc = new XmlDocument(); var wc = Post_WebClient(); try { var response = wc.UploadData("http://" + ip_address + "/" + api_type, Encoding.UTF8.GetBytes(data)); var responseString = Encoding.Default.GetString(response); HandleHeaders(wc); doc.LoadXml(responseString); Console.WriteLine("Response : "); Console.WriteLine(); if (doc.OuterXml.ToString() == string.Empty) { Console.WriteLine("No response from router."); } else if (XMLTool.Beautify(doc).Contains("OK")) { foreach (XmlNode node in doc.DocumentElement) { Console.WriteLine(node.Name + " : " + node.InnerText); } } else if (doc.OuterXml.ToString().Contains("error")) { Console.WriteLine("ERROR " + doc.SelectSingleNode("//error/code").InnerText.ToString() + " : " + ((ErrorCode)(int.Parse(doc.SelectSingleNode("//error/code").InnerText))).ToString()); } Console.WriteLine(); } catch { } return(doc); }
/// <summary> /// Shutdown router /// </summary> /// <param name="ip_address"></param> /// <param name="username"></param> /// <param name="password"></param> public static bool ShutdownDevice(string ip_address, string username, string password) { string data = "<?xml version:\"1.0\" encoding=\"UTF-8\"?><request><Control>4</Control></request>"; XmlDocument shutdown; shutdown = HuaweiAPI.Tools.POST(ip_address, data, "api/device/control"); if (XMLTool.Beautify(shutdown).Contains("OK")) { return(true); } else { return(false); } }
/// <summary> /// Logout router /// </summary> /// <param name="ip_address"></param> /// <param name="username"></param> /// <param name="password"></param> public static bool UserLogout(string ip_address, string username, string password) { string data = "<?xml version:\"1.0\" encoding=\"UTF-8\"?><request><Logout>1</Logout></request>"; XmlDocument logout; logout = HuaweiAPI.Tools.POST(ip_address, data, "api/user/logout"); if (XMLTool.Beautify(logout).Contains("OK")) { return(true); } else { return(false); } }
/// <summary> /// Check for Public land mobile network info /// </summary> /// <param name="ip_address"></param> public static void PLMNInfo(string ip_address) { XmlDocument PLMNInfo; PLMNInfo = HuaweiAPI.Tools.GET_internal(ip_address, "api/net/current-plmn"); if (!XMLTool.Beautify(PLMNInfo).Contains("<error>")) { foreach (XmlNode node in PLMNInfo.DocumentElement) { Console.WriteLine(node.Name + " : " + node.InnerText); } } else { Console.WriteLine("Operation failed."); } }
/// <summary> /// Check device info /// </summary> /// <param name="ip_address"></param> public static void DeviceInfo(string ip_address) { XmlDocument DeviceInfo; DeviceInfo = HuaweiAPI.Tools.GET_internal(ip_address, "api/device/information"); if (!XMLTool.Beautify(DeviceInfo).Contains("<error>")) { foreach (XmlNode node in DeviceInfo.DocumentElement) { Console.WriteLine(node.Name + " : " + node.InnerText); } } else { Console.WriteLine("Operation failed."); } }
/// <summary> /// Login into router /// </summary> /// <param name="ip_address"></param> /// <param name="username"></param> /// <param name="password"></param> public static bool UserLogin(string ip_address, string username, string password) { Initialise(ip_address); string authinfo = HuaweiAPI.Tools.SHA256andB64(username + HuaweiAPI.Tools.SHA256andB64(password) + HuaweiAPI.Tools._requestToken); string logininfo = string.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Username>{0}</Username><Password>{1}</Password><password_type>4</password_type>", username, authinfo); XmlDocument login; login = HuaweiAPI.Tools.POST_internal(ip_address, logininfo, "api/user/login"); if (XMLTool.Beautify(login).Contains("OK")) { return(true); } else { return(false); } }
/// <summary> /// GET request method /// </summary> /// <param name="ip_address"></param> /// <param name="api_type"></param> /// <returns></returns> public static XmlDocument GET(string ip_address, string api_type) { Console.WriteLine("Sending GET request to " + api_type + ".."); XmlDocument doc = new XmlDocument(); var wc = GET_WebClient(); try { var data = wc.DownloadString("http://" + ip_address + "/" + api_type); HandleHeaders(wc); doc.LoadXml(data); Console.WriteLine("Response : "); Console.WriteLine(); if (doc.OuterXml.ToString() == string.Empty) { Console.WriteLine("No response from router."); } else if (!XMLTool.Beautify(doc).Contains("error")) { foreach (XmlNode node in doc.DocumentElement) { Console.WriteLine(node.Name + " : " + node.InnerText); } } else if (doc.OuterXml.ToString().Contains("error")) { Console.WriteLine("ERROR " + doc.SelectSingleNode("//error/code").InnerText.ToString() + " : " + ((ErrorCode)(int.Parse(doc.SelectSingleNode("//error/code").InnerText))).ToString()); } Console.WriteLine(); } catch (Exception e) { } return(doc); }
/// <summary> /// Monitor router signal /// </summary> /// <param name="ip_address"></param> public static void SignalMonitoring(string ip_address) { while (true) { XmlDocument SignalMonitoring; SignalMonitoring = HuaweiAPI.Tools.GET_internal(ip_address, "api/device/signal"); if (!XMLTool.Beautify(SignalMonitoring).Contains("<error>")) { foreach (XmlNode node in SignalMonitoring.DocumentElement) { Console.WriteLine(node.Name + " : " + node.InnerText); } } else { Console.WriteLine("Operation failed."); break; } System.Threading.Thread.Sleep(1000); Console.Clear(); } }