/// <summary> /// Log an error message. /// </summary> public void Log(string msg, string stack = null, bool logInFile = true) { StringBuilder sb = new StringBuilder(); sb.Append(name); sb.Append(" ("); sb.Append(address); if (aliases != null) { for (int i = 0; i < aliases.size; ++i) { sb.Append(", " + aliases.buffer[i]); } } sb.Append("): "); sb.Append(msg); if (stack != null) { sb.Append("\n"); sb.Append(stack); } Tools.Log(sb.ToString(), logInFile); }
/// <summary> /// Verify the connection. Returns 'true' if successful. /// </summary> public bool VerifyRequestID(BinaryReader reader, Buffer buffer, bool uniqueID) { Packet request = (Packet)reader.ReadByte(); if (request == Packet.RequestID) { int theirVer = reader.ReadInt32(); if (theirVer == version) { if (uniqueID) { lock (mLock) { id = ++mPlayerCounter; } } else { id = 0; } name = reader.ReadString(); dataNode = reader.ReadDataNode(); stage = TcpProtocol.Stage.Connected; #if STANDALONE if (id != 0) { Tools.Log(name + " (" + address + "): Connected [" + id + "]"); } #endif return(true); } } return(false); }
/// <summary> /// Remove the specified keyword from the ban list. /// </summary> public virtual void Unban(string keyword) { if (string.IsNullOrEmpty(keyword)) { return; } if (mBan.Remove(keyword)) { Tools.Log("Removed a banned keyword (" + keyword + ")"); SaveBanList(); } }
/// <summary> /// Add the specified keyword to the ban list. /// </summary> public virtual void Ban(string keyword) { if (string.IsNullOrEmpty(keyword)) { return; } if (!mBan.Contains(keyword)) { mBan.Add(keyword); Tools.Log("Added a banned keyword (" + keyword + ")"); SaveBanList(); } else { Tools.Log("Ban already exists (" + keyword + ")"); } }
/// <summary> /// Close the connection. /// </summary> void CloseNotThreadSafe(bool notify) { #if !MODDING #if STANDALONE || UNITY_EDITOR if (id != 0) { Tools.Log(name + " (" + address + "): Disconnected [" + id + "]"); } #endif Buffer.Recycle(mOut); stage = Stage.NotConnected; mSending = false; if (mSocket != null || custom != null) { if (mSocket != null) { try { if (mSocket.Connected) { mSocket.Shutdown(SocketShutdown.Both); } mSocket.Close(); } catch (System.Exception) { } mSocket = null; } if (custom != null) { custom.OnDisconnect(); } if (notify) { var buffer = Buffer.Create(); buffer.BeginPacket(Packet.Disconnect); buffer.EndTcpPacketWithOffset(4); lock (mIn) { Buffer.Recycle(mIn); mIn.Enqueue(buffer); } } else { lock (mIn) Buffer.Recycle(mIn); } } else if (notify && sendQueue != null) { sendQueue = null; Buffer buffer = Buffer.Create(); buffer.BeginPacket(Packet.Disconnect); buffer.EndTcpPacketWithOffset(4); lock (mIn) { Buffer.Recycle(mIn); mIn.Enqueue(buffer); } } if (mReceiveBuffer != null) { mReceiveBuffer.Recycle(); mReceiveBuffer = null; } if (onClose != null) { onClose(this); } id = 0; #endif }