private bool AskAPI()
        {
            ushort i = 0;

            Console.WriteLine("Before we can begin, we need to set up the API params for bitmessage.");
            Console.WriteLine("You need to enable the API first, before you continue here.");
            Console.WriteLine("See this Article for help: https://bitmessage.org/wiki/API");
            Console.WriteLine();
            Console.WriteLine("Enter Bitmessage API Settings below:");
            Console.Write("IP Address: ");
            string IP = Console.ReadLine();

            Console.Write("Port: ");
            string Port = Console.ReadLine();

            Console.Write("Username: "******"Password: "******"Shop address: ");
            Addr = Console.ReadLine();

            //Verify values quick and dirty
            if (IP.Length > 0 && Port.Length > 0 && UN.Length > 0 && PW.Length > 0 && ushort.TryParse(Port, out i) && Addr.Length > 0)
            {
                QuickSettings.Set("API-ADDR", IP + ":" + Port);
                QuickSettings.Set("API-NAME", UN);
                QuickSettings.Set("API-PASS", PW);
                QuickSettings.Set("BM-ADDR", Addr);
                return(true);
            }
            return(false);
        }
        public void Start()
        {
            if (T != null)
            {
                Stop();
            }

            GenericServerLog(this, GenericLogType.Info, false, "Starting Bitmessage server");

            //Check if API has been set
            if (!QuickSettings.Has("API-ADDR") || !QuickSettings.Has("API-NAME") || !QuickSettings.Has("API-PASS") || !QuickSettings.Has("BM-ADDR"))
            {
                if (!AskAPI())
                {
                    GenericServerLog(this, GenericLogType.Fatal, true, "API Settings for Bitmessage have not been made. Please configure Bitmessage Plugin");
                    throw new Exception("API Settings for Bitmessage have not been made. Please configure Bitmessage Plugin");
                }
            }

            Addr   = QuickSettings.Get("BM-ADDR");
            BA     = (BitAPI)XmlRpcProxyGen.Create(typeof(BitAPI));
            BA.Url = string.Format("http://{0}/", QuickSettings.Get("API-ADDR"));
            BA.Headers.Add("Authorization", "Basic " + JsonConverter.B64enc(string.Format("{0}:{1}", QuickSettings.Get("API-NAME"), QuickSettings.Get("API-PASS"))));

            try
            {
                if (BA.helloWorld("A", "B") != "A-B")
                {
                    GenericServerLog(this, GenericLogType.Error, true, "API Settings for Bitmessage are wrong. The API seems to answer, but the answer is incorrect. Please check settings");
                    throw new Exception("API Settings for Bitmessage are wrong. The API seems to answer, but the answer is incorrect. Please check settings");
                }
            }
            catch
            {
                GenericServerLog(this, GenericLogType.Error, true, "Cannot contact Bitmessage API. Verify the client is running, has the API enabled and the settings are correct");
                throw new Exception("Cannot contact Bitmessage API. Verify the client is running, has the API enabled and the settings are correct");
            }
            T = new Thread(run);
            T.IsBackground = true;
            T.Start();
        }