private void Eval_Scribble(User user) { byte[] data = user.ScribbleBuffer.ToArray(); user.ScribbleBuffer = new List <byte>(); if (Settings.GetReg <bool>("receive_scribbles", true) && !user.Ignored) { if (ScriptEvents.OnScribbleReceiving(this, user)) { data = Zip.Decompress(data); if (user.Name == this.users[0].Name) { this.Panel.Scribble(data); } else if (!user.Ignored) { this.Panel.PMScribbleReceived(this, user, user.Name, data); } else { return; } this.Panel.CheckUnreadStatus(); ScriptEvents.OnScribbleReceived(this, user); } } }
private void Eval_Scribble_Unknown() { byte[] data = this.unknown_scribble_buffer.ToArray(); this.unknown_scribble_buffer = new List <byte>(); if (Settings.GetReg <bool>("receive_scribbles", true)) { data = Zip.Decompress(data); this.Panel.Scribble(data); } }
public void Save() { byte[] buf = this.data_in.ToArray(); this.data_in.Clear(); this.data_in = new List <byte>(); if (this.is_opus) { buf = Opus.Decode(buf); } else { for (int i = 0; i < this.compression_count; i++) { buf = Zip.Decompress(buf); } } if (buf.Length > 0) { StringBuilder sb = new StringBuilder(); sb.Append(Helpers.EndPointToHexString(this.EndPoint)); sb.Append("_"); sb.Append(Helpers.UnixTimeMS); sb.Append("_"); sb.Append(this.Ident); try { File.WriteAllBytes(Path.Combine(Settings.VoicePath, sb.ToString() + ".wav"), buf); this.FileName = sb.ToString(); } catch { } sb = null; } buf = null; }
public static DecryptedHashlink DecodeHashlink(String hashlink) { DecryptedHashlink room = new DecryptedHashlink(); try { if (hashlink.ToUpper().StartsWith("CHATROOM:")) // not encrypted { hashlink = hashlink.Substring(9); int split = hashlink.IndexOf(":"); room.IP = IPAddress.Parse(hashlink.Substring(0, split)); hashlink = hashlink.Substring(split + 1); split = hashlink.IndexOf("|"); room.Port = ushort.Parse(hashlink.Substring(0, split)); room.Name = hashlink.Substring(split + 1); return(room); } else // encrypted { byte[] buf = Convert.FromBase64String(hashlink); buf = d67(buf, 28435); buf = Zip.Decompress(buf); HashlinkReader reader = new HashlinkReader(buf); reader.SkipBytes(32); room.IP = reader; room.Port = reader; reader.SkipBytes(4); room.Name = reader; return(room); } } catch // badly formed hashlink { return(null); } }
public bool Service(uint time) { while (this.data_out.Count > 0) { try { this.sock.Send(this.data_out[0]); this.data_out.RemoveAt(0); } catch { break; } } byte[] buf = new byte[8192]; SocketError e = SocketError.Success; int size = 0; bool success = true; try { this.avail = this.sock.Available; if (this.avail > 8192) { this.avail = 8192; } size = this.sock.Receive(buf, 0, this.avail, SocketFlags.None, out e); } catch { } if (size == 0) { if (e == SocketError.WouldBlock) { this.health = 0; } else if (this.health++ > 3) { this.SockCode = (int)e; success = false; } } else { this.health = 0; this.data_in.AddRange(buf.Take(size)); } while (this.data_in.Count >= 3) { ushort len = BitConverter.ToUInt16(this.data_in.ToArray(), 0); if (this.data_in.Count >= (len + 3)) { byte id = this.data_in[2]; byte[] packet = this.data_in.GetRange(3, len).ToArray(); this.data_in.RemoveRange(0, (len + 3)); PacketReceivedEventArgs args = new PacketReceivedEventArgs { Msg = (TCPMsg)id, Packet = new TCPPacketReader(packet), Time = time }; if (args.Msg == TCPMsg.MSG_CHAT_CLIENTCOMPRESSED) { packet = Zip.Decompress(packet); if (packet != null) { if (packet.Length > 0) { this.data_in.InsertRange(0, packet); } } } else { try { this.PacketReceived(null, args); } catch { } } } else { break; } } return(success); }