using System; using Server; using System.Text; using System.Collections; using Server.Accounting; using Server.Network; namespace Server.Admin { public class AdminNetwork { private static ArrayList m_Auth = new ArrayList(); private static bool m_NewLine = true; private static StringBuilder m_ConsoleData = new StringBuilder(); private const string DateFormat = "MMMM dd hh:mm:ss.f tt"; public static void Configure() { PacketHandlers.Register( 0xF1, 0, false, new OnPacketReceive( OnReceive ) ); Core.MultiConsoleOut.Add( new EventTextWriter( new EventTextWriter.OnConsoleChar( OnConsoleChar ), new EventTextWriter.OnConsoleLine( OnConsoleLine ), new EventTextWriter.OnConsoleStr( OnConsoleString ) ) ); Timer.DelayCall( TimeSpan.FromMinutes( 2.5 ), TimeSpan.FromMinutes( 2.5 ), new TimerCallback( CleanUp ) ); } public static void OnConsoleString( string str ) { string outStr; if ( m_NewLine ) { outStr = String.Format( "[{0}]: {1}", DateTime.Now.ToString( DateFormat ), str ); m_NewLine = false; } else { outStr = str; } m_ConsoleData.Append( outStr ); if ( m_ConsoleData.Length >= 4096 ) m_ConsoleData.Remove( 0, 2048 ); for (int i=0;i= 4096 ) m_ConsoleData.Remove( 0, 2048 ); } public static void OnConsoleLine( string line ) { string outStr; if ( m_NewLine ) outStr = String.Format( "[{0}]: {1}{2}", DateTime.Now.ToString( DateFormat ), line, Console.Out.NewLine ); else outStr = String.Format( "{0}{1}", line, Console.Out.NewLine ); m_ConsoleData.Append( outStr ); if ( m_ConsoleData.Length >= 4096 ) m_ConsoleData.Remove( 0, 2048 ); for (int i=0;i 100 && length < 60000 ) { byte[] dest = new byte[(int)(length*1.001)+1]; int destSize = dest.Length; ZLibError error = Compression.Pack( dest, ref destSize, source, length, ZLibQuality.Default ); if ( error != ZLibError.Okay ) { Console.WriteLine( "WARNING: Unable to compress admin packet, zlib error: {0}", error ); return p; } else { return new AdminCompressedPacket( dest, destSize, length ); } } else { return p; } } } public class EventTextWriter : System.IO.TextWriter { public delegate void OnConsoleChar( char ch ); public delegate void OnConsoleLine( string line ); public delegate void OnConsoleStr( string str ); private OnConsoleChar m_OnChar; private OnConsoleLine m_OnLine; private OnConsoleStr m_OnStr; public EventTextWriter( OnConsoleChar onChar, OnConsoleLine onLine, OnConsoleStr onStr ) { m_OnChar = onChar; m_OnLine = onLine; m_OnStr = onStr; } public override void Write( char ch ) { if ( m_OnChar != null ) m_OnChar( ch ); } public override void Write( string str ) { if ( m_OnStr != null ) m_OnStr( str ); } public override void WriteLine( string line ) { if ( m_OnLine != null ) m_OnLine( line ); } public override System.Text.Encoding Encoding{ get{ return System.Text.Encoding.ASCII; } } } }