示例#1
0
            /// <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);
            }
示例#2
0
            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);
            }
示例#3
0
            /// <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);
                }
            }
示例#4
0
            /// <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);
                }
            }
示例#5
0
            /// <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.");
                }
            }
示例#6
0
            /// <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.");
                }
            }
示例#7
0
            /// <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);
                }
            }
示例#8
0
            /// <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);
            }
示例#9
0
            /// <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();
                }
            }