public byte[] ToArray() { MemoryStream ms = new MemoryStream(); UruStream s = new UruStream(ms); Write(s); byte[] buf = ms.ToArray(); s.Close(); ms.Close(); return buf; }
public override bool Connect() { if (!base.Connect()) return false; //Send the FileConnectHeader UruStream s = new UruStream(new NetworkStream(fSocket, false)); s.BufferWriter(); fHeader.Write(s); s.WriteUInt(12); //Size s.WriteUInt(0); s.WriteUInt(0); s.FlushWriter(); s.Close(); fSocket.BeginReceive(new byte[4], 0, 4, SocketFlags.Peek, new AsyncCallback(IReceive), null); return true; }
public void Ping(int time) { File_PingPong ping = new File_PingPong(); ping.fPingTime = time; ResetIdleTimer(); lock (fSocket) { MemoryStream ms = new MemoryStream(); UruStream s = new UruStream(ms); s.WriteUInt(12); s.WriteInt((int)FileCli2Srv.PingRequest); ping.Write(s); fSocket.Send(ms.ToArray()); s.Close(); ms.Close(); } }
public override bool Connect() { if (!base.Connect()) return false; //Send the GateConnectHeader UruStream s = new UruStream(new NetworkStream(fSocket, false)); s.BufferWriter(); fHeader.Write(s); s.WriteInt(20); s.WriteBytes(Guid.Empty.ToByteArray()); s.FlushWriter(); s.Close(); //Init encryption if (!base.NetCliConnect(4)) return false; fSocket.BeginReceive(new byte[2], 0, 2, SocketFlags.Peek, new AsyncCallback(IReceive), null); return true; }
public uint RequestBuildID() { File_BuildIdRequest req = new File_BuildIdRequest(); req.fTransID = IGetTransID(); ResetIdleTimer(); lock (fSocket) { MemoryStream ms = new MemoryStream(); UruStream s = new UruStream(ms); s.WriteUInt(12); s.WriteInt((int)FileCli2Srv.BuildIdRequest); req.Write(s); fSocket.Send(ms.ToArray()); s.Close(); ms.Close(); } return req.fTransID; }
private void IReceive(IAsyncResult ar) { try { lock (fSocket) { fSocket.EndReceive(ar); ResetIdleTimer(); //Size byte[] buf = new byte[4]; fSocket.Receive(buf); //Message buf = new byte[BitConverter.ToInt32(buf, 0) - 4]; fSocket.Receive(buf); fStream = new UruStream(new MemoryStream(buf)); FileSrv2Cli msg = (FileSrv2Cli)fStream.ReadInt(); switch (msg) { case FileSrv2Cli.BuildIdReply: IGotBuildID(); break; case FileSrv2Cli.PingReply: IPong(); break; default: string test = Enum.GetName(typeof(FileSrv2Cli), msg); throw new NotSupportedException(msg.ToString("X") + " - " + test); } fStream.Close(); } fSocket.BeginReceive(new byte[2], 0, 2, SocketFlags.Peek, new AsyncCallback(IReceive), null); } catch (ObjectDisposedException) { } catch (SocketException) { fSocket.Close(); #if !DEBUG } catch (Exception e) { FireException(e); #endif } }
protected virtual bool NetCliConnect(int g) { UruStream s = new UruStream(new NetworkStream(fSocket, false)); //NetCliConnect ISetupKeys(g); s.BufferWriter(); s.WriteByte((byte)NetCliConnectMsg.kNetCliConnect); s.WriteByte(66); s.WriteBytes(fDhData); s.FlushWriter(); //Recv NetCliEncrypt if (s.ReadByte() != (byte)NetCliConnectMsg.kNetCliEncrypt) { fSocket.Close(); return false; } byte[] seed = s.ReadBytes((int)(s.ReadByte() - 2)); ISetupEncryption(seed); s.Close(); return true; }
public override bool Connect() { if (!base.Connect()) return false; //Send the AuthConnectHeader UruStream s = new UruStream(new NetworkStream(fSocket, false)); s.BufferWriter(); fHeader.Write(s); s.WriteInt(20); s.WriteBytes(Guid.Empty.ToByteArray()); s.FlushWriter(); s.Close(); //Init encryption if(!base.NetCliConnect(41)) return false; //Register the client... //Don't require the user to do this. Auth_RegisterRequest req = new Auth_RegisterRequest(); req.fBuildID = fHeader.fBuildID; fStream.BufferWriter(); fStream.WriteUShort((ushort)AuthCli2Srv.ClientRegisterRequest); req.Write(fStream); fStream.FlushWriter(); fSocket.BeginReceive(new byte[2], 0, 2, SocketFlags.Peek, new AsyncCallback(IReceive), null); fChgHack.Reset(); fChgHack.WaitOne(); return true; }
public byte[] ToByteArray() { MemoryStream ms = new MemoryStream(); UruStream w = new UruStream(ms); foreach (FileManifestEntry e in fEntries) { //Filename w.WriteBytes(Encoding.Unicode.GetBytes(e.fFileName)); w.WriteUShort((ushort)0); //Download w.WriteBytes(Encoding.Unicode.GetBytes(e.fDownloadName)); w.WriteUShort((ushort)0); //Hash w.WriteBytes(Encoding.Unicode.GetBytes(e.fHash)); w.WriteUShort((ushort)0); //Compressed Hash w.WriteBytes(Encoding.Unicode.GetBytes(e.fCompressedHash)); w.WriteUShort((ushort)0); //File Size w.WriteUShort((ushort)(e.fFileSize >> 16)); w.WriteUShort((ushort)(e.fFileSize & 0xFFFF)); w.WriteUShort((ushort)0); //Compressed File Size w.WriteUShort((ushort)(e.fCompressedSize >> 16)); w.WriteUShort((ushort)(e.fCompressedSize & 0xFFFF)); w.WriteUShort((ushort)0); //Flags w.WriteUShort((ushort)(e.fFlags >> 16)); w.WriteUShort((ushort)(e.fFlags & 0xFFFF)); w.WriteUShort((ushort)0); } w.WriteUShort((ushort)0); byte[] rtn = ms.ToArray(); w.Close(); ms.Close(); return rtn; }
public byte[] ToArray() { MemoryStream ms = new MemoryStream(); UruStream s = new UruStream(ms); ulong bit = 1; Fields f = NodeFields; s.WriteULong((ulong)f); while (bit != 0 && bit <= (ulong)f) { switch ((f & (Fields)bit)) { case Fields.kBlob_1: s.WriteInt(fBlob[0].Length); s.WriteBytes(fBlob[0]); break; case Fields.kBlob_2: s.WriteInt(fBlob[1].Length); s.WriteBytes(fBlob[1]); break; case Fields.kCreateAgeName: s.WriteUnicodeStringV32(fCreateAgeName); break; case Fields.kCreateAgeUuid: s.WriteBytes(fCreateAgeUuid.ToByteArray()); break; case Fields.kCreateTime: s.WriteUInt(ToUnixTime(fCreateTime)); break; case Fields.kCreatorIdx: s.WriteUInt(fCreatorIdx.Value); break; case Fields.kCreatorUuid: s.WriteBytes(fCreatorUuid.ToByteArray()); break; case Fields.kInt32_1: s.WriteInt(fInt32[0].Value); break; case Fields.kInt32_2: s.WriteInt(fInt32[1].Value); break; case Fields.kInt32_3: s.WriteInt(fInt32[2].Value); break; case Fields.kInt32_4: s.WriteInt(fInt32[3].Value); break; case Fields.kIString64_1: s.WriteUnicodeStringV32(fIString64[0]); break; case Fields.kIString64_2: s.WriteUnicodeStringV32(fIString64[1]); break; case Fields.kModifyTime: s.WriteUInt(ToUnixTime(fModifyTime)); break; case Fields.kNodeIdx: s.WriteUInt(fIdx); break; case Fields.kNodeType: s.WriteUInt((uint)fNodeType); break; case Fields.kString64_1: s.WriteUnicodeStringV32(fString64[0]); break; case Fields.kString64_2: s.WriteUnicodeStringV32(fString64[1]); break; case Fields.kString64_3: s.WriteUnicodeStringV32(fString64[2]); break; case Fields.kString64_4: s.WriteUnicodeStringV32(fString64[3]); break; case Fields.kString64_5: s.WriteUnicodeStringV32(fString64[4]); break; case Fields.kString64_6: s.WriteUnicodeStringV32(fString64[5]); break; case Fields.kText_1: s.WriteUnicodeStringV32(fText[0]); break; case Fields.kText_2: s.WriteUnicodeStringV32(fText[1]); break; case Fields.kUInt32_1: s.WriteUInt(fUInt32[0].Value); break; case Fields.kUInt32_2: s.WriteUInt(fUInt32[1].Value); break; case Fields.kUInt32_3: s.WriteUInt(fUInt32[2].Value); break; case Fields.kUInt32_4: s.WriteUInt(fUInt32[3].Value); break; case Fields.kUuid_1: s.WriteBytes(fUuid[0].ToByteArray()); break; case Fields.kUuid_2: s.WriteBytes(fUuid[1].ToByteArray()); break; case Fields.kUuid_3: s.WriteBytes(fUuid[2].ToByteArray()); break; case Fields.kUuid_4: s.WriteBytes(fUuid[3].ToByteArray()); break; } bit <<= 1; } byte[] buf = ms.ToArray(); s.Close(); ms.Close(); return buf; }
public static VaultNode Parse(byte[] data) { MemoryStream ms = new MemoryStream(data); UruStream s = new UruStream(ms); VaultNode n = new VaultNode(); n.Read(s); s.Close(); ms.Close(); return n; }