コード例 #1
0
ファイル: Program_Helpers.cs プロジェクト: jwne/SMProxy
 static void LogPacket(StreamWriter sw, bool ClientToServer, byte PacketID, PacketReader pr, params object[] args)
 {
     try
     {
         if (sw == null)
         {
             return;
         }
         bool Suppressed = (ClientToServer && ClientDenyPackets.Contains(PacketID)) ||
                           (!ClientToServer && ServerDenyPackets.Contains(PacketID));
         if (FilterOutput && !Filter.Contains(PacketID))
         {
             return;
         }
         if (IgnoreFilterOutput && IgnoreFilter.Contains(PacketID))
         {
             return;
         }
         if (ClientToServer && SuppressClient)
         {
             return;
         }
         if (!ClientToServer && SuppressServer)
         {
             return;
         }
         string address = pr.Client.Client.RemoteEndPoint.ToString();
         if (ClientToServer)
         {
             sw.WriteLine("[" + address + "] {" + DateTime.Now.ToLongTimeString() + "} [CLIENT->SERVER" + (Suppressed ? " SUPPRESSED" : "") + "]: " +
                          ((LibMinecraft.Model.PacketID)PacketID).ToString() + " (0x" + PacketID.ToString("x") + ")");
         }
         else
         {
             sw.WriteLine("[" + address + "] {" + DateTime.Now.ToLongTimeString() + "} [SERVER->CLIENT" + (Suppressed ? " SUPPRESSED" : "") + "]: " +
                          ((LibMinecraft.Model.PacketID)PacketID).ToString() + " (0x" + PacketID.ToString("x") + ")");
         }
         if (pr.Payload.Length == 0)
         {
             return;
         }
         sw.WriteLine("\t[" + DumpArray(pr.Payload) + "]");
         for (int i = 0; i < args.Length; i += 2)
         {
             if (args[i + 1] is byte[])
             {
                 sw.WriteLine("\t" + args[i].ToString() + " (Byte[]): [" + DumpArray((byte[])args[i + 1]) + "]");
             }
             else
             {
                 sw.WriteLine("\t" + args[i].ToString() + " (" + args[i + 1].GetType().Name + "): " + args[i + 1]);
             }
         }
         sw.Flush();
     }
     catch { }
 }