コード例 #1
0
ファイル: Program.cs プロジェクト: xeddmc/BitHTTP
        static void Main(string[] args)
        {
            string API_ADDR, API_NAME, API_PASS;

            if (!QuickSettings.Has("API-ADDR") || !QuickSettings.Has("API-NAME") || !QuickSettings.Has("API-PASS"))
            {
                Console.WriteLine("API settings missing");
                Console.Write("Host: (IP:Port): ");
                API_ADDR = Console.ReadLine();
                Console.Write("Username       : "******"Password       : "******"API-ADDR", API_ADDR);
                QuickSettings.Set("API-NAME", API_NAME);
                QuickSettings.Set("API-PASS", API_PASS);
            }
            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"))));

            MsgListener = new Thread(new ThreadStart(msgListen));
            MsgListener.IsBackground = true;
            MsgListener.Start();

            Console.WriteLine("Ready");
            while (!Console.KeyAvailable)
            {
                Thread.Sleep(500);
            }
            Console.WriteLine("Shutting down...");
            cont = false;
            MsgListener.Join();
        }
コード例 #2
0
ファイル: clsBitAPIserver.cs プロジェクト: AyrA/BitMailServer
 public static bool init(BitSettings BS)
 {
     BA = (BitAPI)CookComputing.XmlRpc.XmlRpcProxyGen.Create(typeof(BitAPI));
     BA.Url = string.Format("http://{0}:{1}/",BS.IP,BS.Port);
     BA.Headers.Add("Authorization", "Basic " + Bitmessage.B64enc(string.Format("{0}:{1}",BS.UName,BS.UPass)));
     return true;
 }
コード例 #3
0
        /// <summary>
        /// List of all Bitmessage Messages in Inbox
        /// </summary>
        /// <param name="BA">BitAPI object</param>
        /// <returns>Array of Bitmessage Messages</returns>
        public static BitMsg[] getMessages(BitAPI BA)
        {
            BitMsgs MSG;

            try
            {
                MSG = JsonConvert.DeserializeObject <BitMsgs>(BA.getAllInboxMessages());
            }
            catch
            {
                return(null);
            }

            if (MSG.inboxMessages != null)
            {
                for (int i = 0; i < MSG.inboxMessages.Length; i++)
                {
                    //Decode Base64
                    MSG.inboxMessages[i].message = B64dec(MSG.inboxMessages[i].message.Trim()).Trim();
                    MSG.inboxMessages[i].subject = B64dec(MSG.inboxMessages[i].subject.Trim()).Trim();
                    //Convert line endings
                    MSG.inboxMessages[i].message = MSG.inboxMessages[i].message
                                                   .Replace("\r\n", "\n")
                                                   .Replace("\r", "")
                                                   .Replace("\n", "\r\n");
                }
            }
            else
            {
                //Empty array
                MSG.inboxMessages = new BitMsg[0];
            }
            return(MSG.inboxMessages);
        }
コード例 #4
0
 public static bool init(BitSettings BS)
 {
     BA     = (BitAPI)CookComputing.XmlRpc.XmlRpcProxyGen.Create(typeof(BitAPI));
     BA.Url = string.Format("http://{0}:{1}/", BS.IP, BS.Port);
     BA.Headers.Add("Authorization", "Basic " + Bitmessage.B64enc(string.Format("{0}:{1}", BS.UName, BS.UPass)));
     return(true);
 }
コード例 #5
0
 public BitmessageServer()
 {
     GenericMessageReceived += new GenericMessageReceivedHandler(BitmessageServer_GenericMessageReceived);
     GenericServerLog       += new GenericServerLogHandler(BitmessageServer_GenericServerLog);
     BA   = null;
     Addr = null;
     T    = null;
     GenericServerLog(this, GenericLogType.Info, false, "Bitmessage Server created");
 }
コード例 #6
0
 /// <summary>
 /// Generates a deterministic BitMessage Address
 /// </summary>
 /// <param name="BA">API</param>
 /// <param name="passphrase">Passphrase</param>
 /// <param name="label">Address label</param>
 /// <returns>Bitmessage Address</returns>
 public static string generateAddress(BitAPI BA, string passphrase, string label)
 {
     if (string.IsNullOrEmpty(label))
     {
         var dt = DateTime.Now;
         label = "GENADDR-" + dt.ToShortDateString() + ";" + dt.ToShortTimeString();
     }
     return(BA.createDeterministicAddresses(B64enc(passphrase), 1, 3, 1, false));
 }
コード例 #7
0
 /// <summary>
 /// Generates a BitMessage Address
 /// </summary>
 /// <param name="BA">API</param>
 /// <param name="label">Address label</param>
 /// <returns>Bitmessage Address</returns>
 public static string generateAddress(BitAPI BA, string label)
 {
     if (string.IsNullOrEmpty(label))
     {
         var dt = DateTime.Now;
         label = "GENADDR-" + dt.ToShortDateString() + ";" + dt.ToShortTimeString();
     }
     return(BA.createRandomAddress(B64enc(label), false));
 }
コード例 #8
0
        /// <summary>
        /// Returns a list of all Addresses
        /// </summary>
        /// <param name="BA">Bitmessage API</param>
        /// <returns>Array of addresses</returns>
        public static BitAddr[] getAddresses(BitAPI BA)
        {
            var ADDR = JsonConvert.DeserializeObject <BitAddrs>(BA.listAddresses());

            if (ADDR.addresses == null)
            {
                ADDR.addresses = new BitAddr[] { };
            }
            return(ADDR.addresses);
        }
コード例 #9
0
 /// <summary>
 /// Sends a bitmessage
 /// </summary>
 /// <param name="API">Bitmessage API</param>
 /// <param name="From">Sender</param>
 /// <param name="To">Receiver (broadcast allowed)</param>
 /// <param name="Subject">Message Subject</param>
 /// <param name="Message">Message Body</param>
 public static void Send(BitAPI API, string From, string To, string Subject, string Message)
 {
     if (To == BROADCAST)
     {
         API.sendBroadcast(From, B64enc(Subject), B64enc(Message));
     }
     else
     {
         API.sendMessage(To, From, B64enc(Subject), B64enc(Message));
     }
 }
コード例 #10
0
        static void Main(string[] args)
        {
            string API_ADDR, API_NAME, API_PASS;

            if (!QuickSettings.Has("API-ADDR") || !QuickSettings.Has("API-NAME") || !QuickSettings.Has("API-PASS"))
            {
                Console.WriteLine("API settings missing");
                Console.Write("Host: (IP:Port): ");
                API_ADDR = Console.ReadLine();
                Console.Write("Username       : "******"Password       : "******"API-ADDR", API_ADDR);
                QuickSettings.Set("API-NAME", API_NAME);
                QuickSettings.Set("API-PASS", API_PASS);
            }
            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"))));

            DNS = JsonConverter.getAddrBook(BA.listAddressBookEntries());
            cc  = new List <HTTPConnection>();
            Req = new Dictionary <string, HTTPConnection>();

            MsgListener = new Thread(new ThreadStart(msgListen));
            MsgListener.IsBackground = true;
            MsgListener.Start();

            s = new HTTPServer();
            s.NewConnection += new NewConnectionHandler(s_NewConnection);
            s.Start();

            Console.WriteLine("Ready");
            while (!Console.KeyAvailable)
            {
                Thread.Sleep(500);
            }

            Console.WriteLine("Shutting down...");
            s.Stop();
            s = null;
            MsgListener.Join();
        }
コード例 #11
0
        public static Subscription[] getSubscriptions(BitAPI BA)
        {
            string s = BA.listSubscriptions();
            Subs   SUBS;

            try
            {
                SUBS = JsonConvert.DeserializeObject <Subs>(s);
            }
            catch
            {
                SUBS = new Subs();
            }
            if (SUBS.Sub == null)
            {
                return(new Subscription[] { });
            }
            return(SUBS.Sub);
        }
コード例 #12
0
        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();
        }
コード例 #13
0
 /// <summary>
 /// Generates a BitMessage Address
 /// </summary>
 /// <param name="BA">API</param>
 /// <param name="label">Address label</param>
 /// <returns>Bitmessage Address</returns>
 public static string generateAddress(BitAPI BA,string label)
 {
     if(string.IsNullOrEmpty(label))
     {
         var dt = DateTime.Now;
         label = "GENADDR-" + dt.ToShortDateString()+";"+dt.ToShortTimeString();
     }
     return BA.createRandomAddress(B64enc(label), false);
 }
コード例 #14
0
 /// <summary>
 /// Sends a bitmessage
 /// </summary>
 /// <param name="API">Bitmessage API</param>
 /// <param name="From">Sender</param>
 /// <param name="To">Receiver (broadcast allowed)</param>
 /// <param name="Subject">Message Subject</param>
 /// <param name="Message">Message Body</param>
 public static void Send(BitAPI API, string From,string To,string Subject,string Message)
 {
     if (To == BROADCAST)
     {
         API.sendBroadcast(From, B64enc(Subject), B64enc(Message));
     }
     else
     {
         API.sendMessage(To, From, B64enc(Subject), B64enc(Message));
     }
 }
コード例 #15
0
        /// <summary>
        /// List of all Bitmessage Messages in Inbox
        /// </summary>
        /// <param name="BA">BitAPI object</param>
        /// <returns>Array of Bitmessage Messages</returns>
        public static BitMsg[] getMessages(BitAPI BA)
        {
            BitMsgs MSG;
            try
            {
                MSG = JsonConvert.DeserializeObject<BitMsgs>(BA.getAllInboxMessages());
            }
            catch
            {
                return null;
            }

            if (MSG.inboxMessages != null)
            {
                for (int i = 0; i < MSG.inboxMessages.Length; i++)
                {
                    //Decode Base64
                    MSG.inboxMessages[i].message = B64dec(MSG.inboxMessages[i].message.Trim()).Trim();
                    MSG.inboxMessages[i].subject = B64dec(MSG.inboxMessages[i].subject.Trim()).Trim();
                    //Convert line endings
                    MSG.inboxMessages[i].message = MSG.inboxMessages[i].message
                        .Replace("\r\n", "\n")
                        .Replace("\r", "")
                        .Replace("\n", "\r\n");
                }
            }
            else
            {
                //Empty array
                MSG.inboxMessages = new BitMsg[0];
            }
            return MSG.inboxMessages;
        }
コード例 #16
0
 /// <summary>
 /// Returns a list of all Addresses
 /// </summary>
 /// <param name="BA">Bitmessage API</param>
 /// <returns>Array of addresses</returns>
 public static BitAddr[] getAddresses(BitAPI BA)
 {
     var ADDR = JsonConvert.DeserializeObject<BitAddrs>(BA.listAddresses());
     if (ADDR.addresses == null)
     {
         ADDR.addresses = new BitAddr[] { };
     }
     return ADDR.addresses;
 }
コード例 #17
0
 /// <summary>
 /// Generates a deterministic BitMessage Address
 /// </summary>
 /// <param name="BA">API</param>
 /// <param name="passphrase">Passphrase</param>
 /// <param name="label">Address label</param>
 /// <returns>Bitmessage Address</returns>
 public static string generateAddress(BitAPI BA,string passphrase, string label)
 {
     if (string.IsNullOrEmpty(label))
     {
         var dt = DateTime.Now;
         label = "GENADDR-" + dt.ToShortDateString() + ";" + dt.ToShortTimeString();
     }
     return BA.createDeterministicAddresses(B64enc(passphrase), 1, 3, 1, false);
 }
コード例 #18
0
ファイル: clsBitmessage.cs プロジェクト: AyrA/BitMailServer
 public static Subscription[] getSubscriptions(BitAPI BA)
 {
     string s = BA.listSubscriptions();
     Subs SUBS;
     try
     {
         SUBS = JsonConvert.DeserializeObject<Subs>(s);
     }
     catch
     {
         SUBS = new Subs();
     }
     if (SUBS.Sub == null)
     {
         return new Subscription[] { };
     }
     return SUBS.Sub;
 }