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))); } }
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); } }
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); } }