Exemplo n.º 1
0
        internal void OnVapServerPacket(byte[] buffer, int length)
        {
            try     // try to deserialize the packet. I didn't want to write a manual deserialization, so this abomination works fine.
                    // yes, it's ugly and I'm sorry.
            {
                try
                {
                    VapServerRootObject obj = JsonConvert.DeserializeObject <VapServerRootObject>(Encoding.UTF8.GetString(buffer, 0, length));

                    switch (obj.id)
                    {
                    case 0:
                        break;

                    case 3:
                        if (Program.settings.debug)
                        {
                            Logger.LogToConsole("vap_getWork from server.", redirector.thisMiner.endPoint);
                        }
                        break;

                    case 4:
                        Logger.LogToConsole("Share accepted?", redirector.thisMiner.endPoint, ConsoleColor.Green);
                        break;

                    default:
                        if (Program.settings.debug)
                        {
                            lock (Logger.ConsoleBlockLock)
                            {
                                Logger.LogToConsole("From Server1 <----<", redirector.thisMiner.endPoint, ConsoleColor.Gray);
                                Logger.LogToConsole("Unknown ID: " + obj.id, redirector.thisMiner.endPoint, ConsoleColor.Gray);
                                Logger.LogToConsole("Param Count: " + obj.result.Count, redirector.thisMiner.endPoint, ConsoleColor.Gray);
                                Logger.LogToConsole(Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint, ConsoleColor.Gray);
                            }
                        }
                        break;
                    }
                }
                catch (Exception ex)
                {
                    try
                    {
                        VapServerRootObjectBool obj = JsonConvert.DeserializeObject <VapServerRootObjectBool>(Encoding.UTF8.GetString(buffer, 0, length));

                        if ((obj.error != null) && obj.result.Equals(null))
                        {
                            Logger.LogToConsole(string.Format(("Server error for {0}: {1} {2}"), redirector.thisMiner.displayName, obj.error.code, obj.error.message), redirector.thisMiner.endPoint, ConsoleColor.Red);
                        }
                        else if (!obj.result.Equals(null))
                        {
                            if (obj.result == false)
                            {
                                Logger.LogToConsole(string.Format(("Server error for {0}: {1} {2}"), redirector.thisMiner.displayName, obj.error.code, obj.error.message), redirector.thisMiner.endPoint, ConsoleColor.Red);
                            }
                        }

                        switch (obj.id)
                        {
                        case 2:
                            if (obj.result == true)
                            {
                                Logger.LogToConsole("Stratum Authorization success: " + redirector.thisMiner.displayName, redirector.thisMiner.endPoint, ConsoleColor.DarkGreen);
                            }
                            else
                            {
                                Logger.LogToConsole("vap_SubmitLogin failed!", redirector.thisMiner.endPoint, ConsoleColor.Red);
                            }
                            break;

                        /*case 4:
                         *  if (obj.result == true)
                         *  {
                         *      redirector.AcceptedShare();
                         *
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                         *
                         *  }
                         *  else if (obj.result == false)
                         *  {
                         *      redirector.RejectedShare();
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                         *  }
                         *  break;
                         *
                         * case 10: // Apparently Claymore 10.4 sends this
                         *  if (obj.result == true)
                         *  {
                         *      redirector.AcceptedShare();
                         *
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                         *
                         *  }
                         *  else if (obj.result == false)
                         *  {
                         *      redirector.RejectedShare();
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                         *  }
                         *  break;*/

                        case 6:
                            if (Program.settings.debug)
                            {
                                Logger.LogToConsole(string.Format("Hashrate accepted: {0}", obj.result), redirector.thisMiner.endPoint, ConsoleColor.DarkGreen);
                            }
                            break;

                        default:
                            if (Program.settings.debug)
                            {
                                lock (Logger.ConsoleBlockLock)
                                {
                                    Logger.LogToConsole("From Server2 <----<", redirector.thisMiner.endPoint);
                                    Logger.LogToConsole("Unknown ID: " + obj.id, redirector.thisMiner.endPoint);
                                    Logger.LogToConsole("Result: " + obj.result, redirector.thisMiner.endPoint);
                                    Logger.LogToConsole(Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint);
                                }
                            }
                            break;
                        }

                        if (((int)obj.id).Equals(submitWorkID))
                        {
                            if (obj.result == true)
                            {
                                redirector.AcceptedShare();

                                Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                            }
                            else if (obj.result == false)
                            {
                                redirector.RejectedShare();
                                Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                            }
                        }
                    }
                    catch (Exception ex2)
                    {
                        try
                        {
                            VapServerRootObjectError obj = JsonConvert.DeserializeObject <VapServerRootObjectError>(Encoding.UTF8.GetString(buffer, 0, length));

                            if (obj.error != null && obj.error.Length > 0)
                            {
                                if (obj.result == false)
                                {
                                    Logger.LogToConsole(string.Format(("Server error for {0}: {1}"), redirector.thisMiner.displayName, obj.error), redirector.thisMiner.endPoint, ConsoleColor.Red);
                                }
                            }
                            else
                            {
                                lock (Logger.ConsoleBlockLock)
                                {
                                    Logger.LogToConsole(ex2.ToString(), redirector.thisMiner.endPoint);
                                    Logger.LogToConsole("From Server3 <----<", redirector.thisMiner.endPoint);
                                    Logger.LogToConsole("ID: " + obj.id, redirector.thisMiner.endPoint);
                                    Logger.LogToConsole("Result: " + obj.result, redirector.thisMiner.endPoint);
                                    Logger.LogToConsole(Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint);
                                }
                            }
                        }
                        catch (Exception ex3)
                        {
                            if (Program.settings.debug)
                            {
                                lock (Logger.ConsoleBlockLock)
                                {
                                    Logger.LogToConsole(ex3.ToString(), redirector.thisMiner.endPoint);
                                    Logger.LogToConsole(Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogToConsole(ex.ToString(), redirector.thisMiner.endPoint);
                if (Program.settings.debug)
                {
                    Logger.LogToConsole("Json Err: " + Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint, ConsoleColor.Red);
                }
            }

            if (redirector.thisMiner.connectionAlive && redirector.m_client.Disposed == false)
            {
                redirector.m_client.Send(buffer, length);
            }

            if (Program.settings.log)
            {
                Program._logMessages.Add(new LogMessage(Logger.logFileName + ".txt", DateTime.Now.ToLongTimeString() + " <----<\r\n" + Encoding.UTF8.GetString(buffer, 0, length)));
            }
        }
Exemplo n.º 2
0
        internal void OnZcashServerPacket(byte[] buffer, int length)
        {
            try
            {
                dynamic dyn = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(buffer, 0, length));

                if (dyn.id != null)
                {
                    switch ((int)dyn.id)
                    {
                    case 2:     //Login authorize
                        if ((bool)dyn.result)
                        {
                            Logger.LogToConsole("Stratum Authorization success: " + redirector.thisMiner.displayName, redirector.thisMiner.endPoint, ConsoleColor.DarkGreen);
                        }
                        else
                        {
                            Logger.LogToConsole("Stratum Authorization failure: " + redirector.thisMiner.displayName, redirector.thisMiner.endPoint, ConsoleColor.Red);
                        }
                        break;

                    case 4:     //Share
                        if ((bool)dyn.result)
                        {
                            redirector.AcceptedShare();
                            Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                        }
                        else
                        {
                            redirector.RejectedShare();
                            Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.rejectedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                        }
                        break;
                    }
                }

                if (dyn.method != null)
                {
                    switch ((string)dyn.method)
                    {
                    case "mining.notify":
                        if (Program.settings.debug)
                        {
                            Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + " got a job"), redirector.thisMiner.endPoint);
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogToConsole(ex.ToString(), redirector.thisMiner.endPoint);
                if (Program.settings.debug)
                {
                    Logger.LogToConsole("Json Err: " + Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint, ConsoleColor.Red);
                }
            }

            if (redirector.thisMiner.connectionAlive && redirector.m_client.Disposed == false)
            {
                redirector.m_client.Send(buffer, length);
            }
        }
Exemplo n.º 3
0
        internal void OnEthServerPacket(byte[] buffer, int length)
        {
            try
            {
                dynamic dyn = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(buffer, 0, length));

                //Logger.LogToConsole("dyn.method: " + dyn.method);

                if (dyn.id != null)
                {
                    switch ((int)dyn.id)
                    {
                    case 2:     //Login authorize
                        if ((bool)dyn.result)
                        {
                            Logger.LogToConsole("Stratum Authorization success: " + redirector.thisMiner.displayName, redirector.thisMiner.endPoint, ConsoleColor.DarkGreen);
                        }
                        else
                        {
                            Logger.LogToConsole("Stratum Authorization failure: " + redirector.thisMiner.displayName, redirector.thisMiner.endPoint, ConsoleColor.Red);
                        }
                        break;

                        /*case 4: //Share
                         *  if ((bool)dyn.result)
                         *  {
                         *      redirector.AcceptedShare();
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                         *  }
                         *  else
                         *  {
                         *      redirector.RejectedShare();
                         *      Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.rejectedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                         *  }
                         *  break;*/
                    }

                    if (/*(int)dyn.id != 4 && */ (int)dyn.id == lastShareSubmitID) // Testin
                    {
                        if (dyn.result != null)
                        {
                            if ((bool)dyn.result)
                            {
                                redirector.AcceptedShare();
                                Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got accepted. [{0} shares accepted]", redirector.thisMiner.acceptedShares), redirector.thisMiner.endPoint, ConsoleColor.Green);
                            }
                            else
                            {
                                redirector.RejectedShare();
                                Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + "'s share got rejected. [{0} shares rejected]", redirector.thisMiner.rejectedShares), redirector.thisMiner.endPoint, ConsoleColor.Red);
                            }
                            //lastShareSubmitID = -1;
                        }
                    }
                }

                if (dyn.method != null)
                {
                    switch ((string)dyn.method)
                    {
                    case "mining.notify":
                        if (Program.settings.debug)
                        {
                            Logger.LogToConsole(string.Format(redirector.thisMiner.displayName + " got a job"), redirector.thisMiner.endPoint);
                        }
                        break;

                    case "mining.set_difficulty":
                        Newtonsoft.Json.Linq.JValue val = dyn.@params[0];
                        string diff = val.Value.ToString();
                        Logger.LogToConsole(string.Format("Pool set difficulty to: " + diff), redirector.thisMiner.endPoint);
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.LogToConsole(ex.ToString(), redirector.thisMiner.endPoint);
                if (Program.settings.debug)
                {
                    Logger.LogToConsole("Json Err: " + Encoding.UTF8.GetString(buffer, 0, length), redirector.thisMiner.endPoint, ConsoleColor.Red);
                }
            }

            if (redirector.thisMiner.connectionAlive && redirector.m_client.Disposed == false)
            {
                redirector.m_client.Send(buffer, length);
            }
        }