public void ReadFromStream(MStreamReader sr) { ButtonState = sr.ReadByte(); Button = sr.ReadByte(); MouseX = sr.ReadSingle(); MouseY = sr.ReadSingle(); Time = sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { Msg = new MessageStruct { Username = sr.ReadString(), Message = sr.ReadString(), ChannelTarget = sr.ReadString(), SenderId = sr.ReadInt32() }; }
public void ReadFromStream(MStreamReader sr) { Status = new UserStatus { Status = (Status)sr.ReadByte(), StatusText = sr.ReadString(), BeatmapChecksum = sr.ReadString(), CurrentMods = (Mod)sr.ReadUInt32(), Playmode = (PlayMode)sr.ReadByte(), BeatmapId = sr.ReadUInt32(), }; }
public void ReadFromStream(MStreamReader sr) { var c = sr.ReadInt32(); for (var i = 0; i < c; i++) { FileNames.Add(sr.ReadString()); } c = sr.ReadInt32(); for (var i = 0; i < c; i++) { Ids.Add(sr.ReadInt32()); } }
public void ReadFromStream(MStreamReader sr) { BeatmapId = sr.ReadInt32(); ParentSetId = sr.ReadInt32(); DiffName = sr.ReadString(); FileMd5 = sr.ReadString(); Mode = (PlayMode)sr.ReadSByte(); Bpm = sr.ReadInt32(); Ar = sr.ReadSingle(); Od = sr.ReadSingle(); Cs = sr.ReadSingle(); Hp = sr.ReadSingle(); TotalLength = sr.ReadInt32(); Playcount = sr.ReadInt32(); Passcount = sr.ReadInt32(); MaxCombo = sr.ReadInt64(); DifficultyRating = sr.ReadDouble(); }
public void ReadFromStream(MStreamReader sr) { MatchId = sr.ReadInt16(); InProgress = sr.ReadBoolean(); MatchType = (MatchType)sr.ReadByte(); ActiveMods = (Mod)sr.ReadUInt32(); Name = sr.ReadString(); Password = sr.ReadString(); BeatmapName = sr.ReadString(); BeatmapId = sr.ReadInt32(); BeatmapMd5 = sr.ReadString(); for (var i = 0; i < MaxPlayers; i++) { Slots[i].Status = (MultiSlotStatus)sr.ReadByte(); } for (var i = 0; i < MaxPlayers; i++) { Slots[i].Team = (MultiSlotTeam)sr.ReadByte(); } for (var i = 0; i < MaxPlayers; i++) { Slots[i].UserId = (Slots[i].Status & (MultiSlotStatus)124) > 0 ? sr.ReadInt32() : -1; } HostId = sr.ReadInt32(); PlayMode = (PlayMode)sr.ReadByte(); ScoringType = (ScoringType)sr.ReadByte(); TeamType = (TeamType)sr.ReadByte(); SpecialModes = (MatchSpecialModes)sr.ReadByte(); if (SpecialModes == MatchSpecialModes.Freemods) { for (var i = 0; i < MaxPlayers; i++) { Slots[i].Mods = (Mod)sr.ReadUInt32(); } } Seed = sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { Extra = sr.ReadInt32(); int count = sr.ReadInt16(); ReplayFrames = new List <ReplayFrame>(count); for (var i = 0; i < count; i++) { var rframes = sr.ReadData <ReplayFrame>(); ReplayFrames.Add(rframes); } Action = sr.ReadByte(); var sframe = new ScoreFrame(); sframe.ReadFromStream(sr); ScoreFrame = sframe; }
public void ReadFromStream(MStreamReader sr) { Time = sr.ReadInt32(); Id = sr.ReadByte(); Count300 = sr.ReadUInt16(); Count100 = sr.ReadUInt16(); Count50 = sr.ReadUInt16(); CountGeki = sr.ReadUInt16(); CountKatu = sr.ReadUInt16(); CountMiss = sr.ReadUInt16(); TotalScore = sr.ReadInt32(); MaxCombo = sr.ReadUInt16(); CurrentCombo = sr.ReadUInt16(); Perfect = sr.ReadBoolean(); CurrentHp = sr.ReadByte(); TagByte = sr.ReadByte(); ScoreV2 = sr.ReadBoolean(); ComboPortion = ScoreV2 ? sr.ReadDouble() : 0; BonusPortion = ScoreV2 ? sr.ReadDouble() : 0; }
public void ReadFromStream(MStreamReader sr) { SetId = sr.ReadInt32(); var count = sr.ReadInt32(); ChildrenBeatmaps = new List <ChildrenBeatmap>(); for (var i = 0; i < count; i++) { ChildrenBeatmaps.Add(sr.ReadData <ChildrenBeatmap>()); } RankedStatus = (BeatmapSetOnlineStatus)sr.ReadSByte(); if (DateTime.TryParse(sr.ReadString(), out var res)) { ApprovedDate = res; } if (DateTime.TryParse(sr.ReadString(), out res)) { LastUpdate = res; } if (DateTime.TryParse(sr.ReadString(), out res)) { LastChecked = res; } Artist = sr.ReadString(); Title = sr.ReadString(); Creator = sr.ReadString(); Source = sr.ReadString(); Tags = sr.ReadString(); HasVideo = sr.ReadBoolean(); Genre = (Genre)sr.ReadSByte(); Language = (Language)sr.ReadSByte(); Favourites = sr.ReadInt64(); Disabled = sr.ReadBoolean(); }
public void ReadFromStream(MStreamReader sr) { ErrorState = (ErrorStates)sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { throw new NotImplementedException(); }
public void ReadFromStream(MStreamReader sr) { FriendId = sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { (Match = new Match()).ReadFromStream(sr); }
public void ReadFromStream(MStreamReader sr) { ToSpectateId = sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { Room = new MultiplayerRoom(); Room.ReadFromStream(sr); }
public void ReadFromStream(MStreamReader sr) { MatchId = sr.ReadInt32(); Password = sr.ReadString(); }
public void ReadFromStream(MStreamReader sr) { UserId = sr.ReadInt32(); }
public void ReadFromStream(MStreamReader sr) { Mods = (Mod)sr.ReadUInt32(); }
public void ReadFromStream(MStreamReader sr) { UserIds = sr.ReadInt32List(); }
public void ReadFromStream(MStreamReader sr) { Protocol = sr.ReadUInt32(); }
//[Produces("application/octet-stream")] public async Task <IActionResult> IndexPOST( [FromHeader(Name = "osu-token")] string clientToken = null ) { try { Response.Headers["cho-protocol"] = "19"; Response.Headers["Connection"] = "keep-alive"; Response.Headers["Keep-Alive"] = "timeout=60, max=100"; Response.Headers["cho-server"] = "Sora (https://github.com/Mempler/Sora)"; Response.StatusCode = 200; await using var body = new MemoryStream(); await Request.Body.CopyToAsync(body); body.Position = 0; await using var mw = MStreamWriter.New(); using var mr = new MStreamReader(body); Presence pr; try { if (string.IsNullOrEmpty(clientToken)) { pr = new Presence(_cs); Response.Headers["cho-token"] = pr.Token; string ip = Response.Headers["X-Forwarded-For"]; if (string.IsNullOrEmpty(ip)) { ip = "127.0.0.1"; } await _evmng.RunEvent( EventType.BanchoLoginRequest, new BanchoLoginRequestArgs { pr = pr, Reader = mr, Writer = mw, IPAddress = ip } ); mw.Flush(); return(await RetOut(mw.BaseStream)); } } catch (Exception ex) { Logger.Err(ex); mw.Write(new LoginResponse(LoginResponses.Exception)); return(await RetOut(mw.BaseStream)); } pr = _ps.GetPresence(Request.Headers["osu-token"]); if (pr == null) { Logger.Warn( "Presence of token%#F94848%", Request.Headers["osu-token"], "%#FFFFFF%hasn't been found!" ); Response.StatusCode = 403; // Presence is not known, force the client to send login info. return(await RetOut(mw.BaseStream)); } while (true) { try { pr.LastRequest.Restart(); if (Request.ContentLength - body.Position < 7) { break; // Dont handle any invalid packets! (less then bytelength of 7) } var packetId = (PacketId)mr.ReadInt16(); mr.ReadBoolean(); var packetData = mr.ReadBytes(); await using var packetDataStream = new MemoryStream(packetData); using var packetDataReader = new MStreamReader(packetDataStream); await _evmng.RunEvent( EventType.BanchoPacket, new BanchoPacketArgs { pr = pr, PacketId = packetId, Data = packetDataReader } ); } catch (Exception ex) { Logger.Err(ex); break; } } try { if (Response.Body.CanWrite) { pr.GetOutput() .WriteTo(Response.Body); } return(await RetOut(mw.BaseStream)); } catch { // Ignored because it may throw an exception. } if (pr.Get <bool>("IS_LAST_REQUEST")) { _ps.EndPresence(pr, true); } } catch (Exception ex) { Logger.Err(ex); } return(Ok()); }
public void ReadFromStream(MStreamReader sr) { Match = new Match(); Match.ReadFromStream(sr); }
public void ReadFromStream(MStreamReader sr) { Frame = sr.ReadData <ScoreFrame>(); }
public void ReadFromStream(MStreamReader sr) { Frames = sr.ReadData <SpectatorFrame>(); }
public async Task <IActionResult> IndexPost([FromHeader(Name = "osu-token")] string clientToken = null) { try { Response.Headers["cho-protocol"] = "19"; Response.Headers["Connection"] = "keep-alive"; Response.Headers["Keep-Alive"] = "timeout=60, max=100"; Response.Headers["cho-server"] = "Sora (https://github.com/Mempler/Sora)"; Response.StatusCode = 200; await using var body = new MemoryStream(); await Request.Body.CopyToAsync(body); body.Position = 0; await using var mw = MStreamWriter.New(); using var mr = new MStreamReader(body); var pr = new Presence(new User()); if (string.IsNullOrEmpty(clientToken)) { Response.Headers["cho-token"] = pr.Token.ToString(); string ip = Request.Headers["X-Real-IP"]; if (string.IsNullOrEmpty(ip)) { ip = "127.0.0.1"; } await _evManager.RunEvent(EventType.BanchoLoginRequest, new BanchoLoginRequestArgs { Reader = mr, Writer = mw, Pr = pr, IpAddress = ip }); mw.Flush(); return(await RetOut(mw.BaseStream)); } if (_presenceService.TryGet(new Token(clientToken.Trim()), out pr)) { while (true) { try { pr["LAST_PONG"] = DateTime.Now; if (Request.ContentLength - body.Position < 7) { break; // Dont handle any invalid packets! (less then bytelength of 7) } var packetId = (PacketId)mr.ReadInt16(); mr.ReadBoolean(); var packetData = mr.ReadBytes(); await using var packetDataStream = new MemoryStream(packetData); using var packetDataReader = new MStreamReader(packetDataStream); await _evManager.RunEvent( EventType.BanchoPacket, new BanchoPacketArgs { Pr = pr, PacketId = packetId, Data = packetDataReader } ); } catch (Exception ex) { Logger.Err(ex); break; } } try { await using var m = new MemoryStream(); if (Response.Body.CanWrite) { pr.WritePackets(m); } return(await RetOut(m)); } catch (Exception ex) { Logger.Err(ex); // Ignored because it may throw an exception. } } else { return(StatusCode(403)); } } catch (Exception ex) { Logger.Err(ex); } return(Ok()); }
public void ReadFromStream(MStreamReader sr) { ChannelName = sr.ReadString(); }
public ActionResult PutDatabase( [FromQuery] string key, [FromQuery] bool drop ) { if (key != Environment.GetEnvironmentVariable("PRIVATE_API_KEY")) { return(Unauthorized("Key is wrong!")); } if (drop) { _searchEngine.DeleteAllBeatmaps(); using (var db = _contextFactory.GetForWrite()) { db.Context.Database.ExecuteSqlCommand ("SET FOREIGN_KEY_CHECKS = 0;" + "TRUNCATE TABLE `Beatmaps`;" + "ALTER TABLE `Beatmaps` AUTO_INCREMENT = 1;" + "TRUNCATE TABLE `BeatmapSet`;" + "ALTER TABLE `BeatmapSet` AUTO_INCREMENT = 1;" + "SET FOREIGN_KEY_CHECKS = 1;"); } } lock (_lock) { var f = Request.Form.Files["dump.piss"]; using (var stream = f.OpenReadStream()) using (var sr = new MStreamReader(stream)) using (var db = _contextFactory.GetForWrite()) { var count = sr.ReadInt32(); Logger.LogPrint($"Count: {count}"); for (var i = 0; i < count; i++) { var set = sr.ReadData <BeatmapSet>(); Logger.LogPrint($"Importing BeatmapSet {set.SetId} {set.Artist} - {set.Title} ({set.Creator}) of Index {i}", LoggingTarget.Database, LogLevel.Important); if (!drop) { if (db.Context.BeatmapSet.Any(s => s.SetId == set.SetId)) { db.Context.BeatmapSet.Update(set); } else { db.Context.BeatmapSet.Add(set); } } else { db.Context.BeatmapSet.Add(set); } } Logger.LogPrint("Finish importing maps!"); } return(Ok("Success!")); } }