byte[] HandleMessage(byte[] buffer) { try { int length = 0; byte msg = buffer[0]; switch (msg) { case 0x00: length = 0; break; //Keep alive case 0x01: length = BitConverter.ToInt16(buffer, 1) + BitConverter.ToInt16(buffer, BitConverter.ToInt16(buffer, 1) + 3) + 4; break; //Username/Password default: Server.Log("unhandled message id " + msg); Kick("Unknown Packet id: " + msg); return(new byte[0]); } if (buffer.Length > length) { byte[] message = new byte[length]; Buffer.BlockCopy(buffer, 1, message, 0, length); byte[] tempbuffer = new byte[buffer.Length - length - 1]; Buffer.BlockCopy(buffer, length + 1, tempbuffer, 0, buffer.Length - length - 1); buffer = tempbuffer; //if(username!= "Merlin33069") Server.Log(msg + ""); switch (msg) { case 0x01: HandleLogin(message); break; } if (buffer.Length > 0) { buffer = HandleMessage(buffer); } else { return(new byte[0]); } } } catch (Exception e) { Server.Log(e.Message); Server.Log(e.StackTrace); } return(buffer); }
public RC(Socket a) { s = a; try { ip = a.RemoteEndPoint.ToString().Split(':')[0]; Server.Log(ip + " REMOTE CONSOLE connected to the server."); asen = new ASCIIEncoding(); a.BeginReceive(tempbuffer, 0, tempbuffer.Length, SocketFlags.None, new AsyncCallback(Receive), this); SendRaw(0xFE); } catch (Exception e) { Server.Log(e.Message); Server.Log(e.StackTrace); } }
public static void donow(string command) { SQLiteCommand comm = new SQLiteCommand(); comm.Connection = con; comm.CommandText = command; try { comm.ExecuteNonQuery(); } catch (SQLiteException exception) { Server.Log("Failed :" + exception.Message); } catch (Exception e) { Server.Log("Failed :" + e.Message); } }
static void Receive(IAsyncResult result) { RC rc = (RC)result.AsyncState; if (rc.disconnected || rc.s == null) { return; } try { int length = rc.s.EndReceive(result); if (length == 0) { rc.Disconnect(); return; } byte[] b = new byte[rc.buffer.Length + length]; Buffer.BlockCopy(rc.buffer, 0, b, 0, rc.buffer.Length); Buffer.BlockCopy(rc.tempbuffer, 0, b, rc.buffer.Length, length); rc.buffer = rc.HandleMessage(b); rc.s.BeginReceive(rc.tempbuffer, 0, rc.tempbuffer.Length, SocketFlags.None, new AsyncCallback(Receive), rc); } catch (SocketException e) { rc.Disconnect(); } catch (ObjectDisposedException e) { } catch (Exception e) { Server.Log(e.Message); Server.Log(e.StackTrace); } }