Пример #1
0
        public ActionResult <EamuseXrpcData> Check([FromBody] EamuseXrpcData data)
        {
            data.Document = new XDocument(new XElement("response", new XElement("lobby", new XElement("data",
                                                                                                      new KU32("entrant_nr", 1).AddAttr("time", 0),
                                                                                                      new KS16("interval", 60),
                                                                                                      new KS16("entry_timeout", 30),
                                                                                                      new XElement("waitlist", new XAttribute("count", 0))
                                                                                                      ))));

            return(data);
        }
Пример #2
0
        public ActionResult <EamuseXrpcData> Report([FromBody] EamuseXrpcData data)
        {
            XElement lobby = data.Document.Element("call").Element("lobby");

            _ = long.Parse(lobby.Element("data").Element("roomid").Value);

            data.Document = new XDocument(new XElement("response", new XElement("lobby",
                                                                                new XElement("data",
                                                                                             new KS16("refresh_intr", 2)
                                                                                             )
                                                                                )));

            return(data);
        }
Пример #3
0
        public ActionResult <EamuseXrpcData> Report([FromBody] EamuseXrpcData data)
        {
            XElement dataE = data.Document.Element("call").Element("logger").Element("data");

            string srcId = data.Document.Element("call").Attribute("srcid").Value;
            string code  = dataE.Element("code").Value;
            string info  = dataE.Element("information").Value;

            Console.WriteLine("[" + srcId + ", " + code + "]:" + info);

            data.Document = new XDocument(new XElement("response", new XElement("logger")));

            return(data);
        }
Пример #4
0
        public async Task <ActionResult <EamuseXrpcData> > GetRefId([FromBody] EamuseXrpcData data)
        {
            XElement cardmng = data.Document.Element("call").Element("cardmng");

            string cardId = cardmng.Attribute("cardid").Value.ToUpper();
            string passwd = cardmng.Attribute("passwd").Value;

            if (await ctx.Cards.AnyAsync(c => c.CardId == cardId))
            {
                data.Document = new XDocument(new XElement("response", new XElement("cardmng")));
                return(data);
            }

            Random rng = new Random();

            byte[] dataId = new byte[8];
            byte[] refId  = new byte[8];

            rng.NextBytes(dataId);
            rng.NextBytes(refId);

            Player player = new Player()
            {
                Passwd = passwd
            };

            Card card = new Card()
            {
                CardId = cardId,
                DataId = dataId.ToHexString(),
                RefId  = refId.ToHexString(),
                Player = player
            };

            ctx.Players.Add(player);
            ctx.Cards.Add(card);

            await ctx.SaveChangesAsync();

            data.Document = new XDocument(new XElement("response", new XElement("cardmng",
                                                                                new XAttribute("dataid", card.DataId),
                                                                                new XAttribute("refid", card.RefId)
                                                                                )));

            return(data);
        }
Пример #5
0
        public async Task <ActionResult <EamuseXrpcData> > Register([FromBody] EamuseXrpcData data)
        {
            XElement gametop = data.Document.Element("call").Element("gametop");
            XElement player  = gametop.Element("data").Element("player");
            string   refId   = player.Element("refid").Value.ToUpper();
            string   name    = player.Element("name").Value;

            Card card = await ctx.Cards
                        .Include(c => c.Player.JubeatProfile)
                        .ThenInclude(p => p.Jubilitys)
                        .Include(c => c.Player.JubeatProfile.ClanData)
                        .Include(c => c.Player.JubeatProfile.ClanSettings)
                        .SingleOrDefaultAsync(c => c.RefId == refId);

            if (card == null || card.Player == null)
            {
                return(NotFound());
            }

            if (card.Player.JubeatProfile == null)
            {
                card.Player.JubeatProfile = new JubeatProfile();
            }

            card.Player.JubeatProfile.Name = name;

            await ctx.SaveChangesAsync();

            try
            {
                data.Document = new XDocument(new XElement("response", new XElement("gametop",
                                                                                    new XElement("data",
                                                                                                 GetInfoElement(),
                                                                                                 await GetPlayerElement(card)
                                                                                                 )
                                                                                    )));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(StatusCode(500));
            }

            return(data);
        }
Пример #6
0
        public ActionResult <EamuseXrpcData> GetMeeting([FromBody] EamuseXrpcData data)
        {
            var gametop = data.Document.Element("call").Element("gametop");
            var player  = gametop.Element("data").Element("player");

            _ = int.Parse(player.Element("jid").Value);

            data.Document = new XDocument(new XElement("response", new XElement("gametop", new XElement("data",
                                                                                                        new XElement("meeting",
                                                                                                                     new XElement("single", new XAttribute("count", 0),
                                                                                                                                  new XElement("info")
                                                                                                                                  )
                                                                                                                     ),
                                                                                                        new XElement("reward",
                                                                                                                     new KS32("total", 0),
                                                                                                                     new KS32("point", 0)
                                                                                                                     )
                                                                                                        ))));

            return(data);
        }
Пример #7
0
        public async Task <ActionResult <EamuseXrpcData> > Final([FromBody] EamuseXrpcData xrpcData)
        {
            try
            {
                XElement dataE   = xrpcData.Document.Element("call").Element("gameend").Element("data");
                XElement playerE = dataE.Element("player");

                xrpcData.Document = new XDocument(new XElement("response", new XElement("gameend")));

                if (playerE == null)
                {
                    return(xrpcData);
                }

                int jid = int.Parse(playerE.Element("jid").Value);

                JubeatProfile profile = await ctx.JubeatProfiles
                                        .Include(p => p.ClanData)
                                        .Include(p => p.ClanSettings)
                                        .Include(p => p.Jubilitys)
                                        .SingleOrDefaultAsync(p => p.ID == jid);

                var data = profile.ClanData;

                XElement jboxE = playerE.Element("jbox");
                data.JboxPoints = int.Parse(jboxE.Element("point").Value);

                await ctx.SaveChangesAsync();

                return(xrpcData);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(StatusCode(500));
            }
        }
Пример #8
0
        public ActionResult <EamuseXrpcData> GetJboxList([FromBody] EamuseXrpcData data)
        {
            data.Document = new XDocument(new XElement("response", new XElement("demodata")));

            return(data);
        }
Пример #9
0
        public async Task <ActionResult <EamuseXrpcData> > GetMdata([FromBody] EamuseXrpcData data)
        {
            var gametop = data.Document.Element("call").Element("gametop");
            var player  = gametop.Element("data").Element("player");
            int jid     = int.Parse(player.Element("jid").Value);

            var profile = await ctx.JubeatProfiles.SingleOrDefaultAsync(p => p.ID == jid);

            if (profile == null)
            {
                return(NotFound());
            }

            var scoreGroups = ctx.JubeatHighscores
                              .Where(s => s.ProfileID == profile.ID)
                              .GroupBy(s => s.MusicID);

            XElement mdataList = new XElement("mdata_list");

            foreach (var scoreGroup in scoreGroups)
            {
                var scoreRes = new int[3];
                var clearRes = new sbyte[3];
                var playCnt  = new int[3];
                var clearCnt = new int[3];
                var fcCnt    = new int[3];
                var exCnt    = new int[3];
                var bars     = new[] { new byte[30], new byte[30], new byte[30] };

                foreach (JubeatHighscore highscore in scoreGroup)
                {
                    int seq = highscore.Seq;

                    scoreRes[seq] = highscore.Score;
                    clearRes[seq] = highscore.Clear;
                    playCnt[seq]  = highscore.PlayCount;
                    clearCnt[seq] = highscore.ClearCount;
                    fcCnt[seq]    = highscore.FcCount;
                    exCnt[seq]    = highscore.ExcCount;
                    bars[seq]     = highscore.Bar;
                }

                mdataList.Add(new XElement("music", new XAttribute("music_id", scoreGroup.Key),
                                           new KS32("score", scoreRes),
                                           new KS8("clear", clearRes),
                                           new KS32("play_cnt", playCnt),
                                           new KS32("clear_cnt", clearCnt),
                                           new KS32("fc_cnt", fcCnt),
                                           new KS32("ex_cnt", exCnt),
                                           new KU8("bar", bars[2]).AddAttr("seq", 2),
                                           new KU8("bar", bars[0]).AddAttr("seq", 0),
                                           new KU8("bar", bars[1]).AddAttr("seq", 1)
                                           ));
            }

            data.Document = new XDocument(new XElement("response", new XElement("gametop", new XElement("data",
                                                                                                        new XElement("player",
                                                                                                                     new KS32("jid", jid),
                                                                                                                     mdataList
                                                                                                                     )
                                                                                                        ))));

            return(data);
        }
Пример #10
0
 public ActionResult <EamuseXrpcData> Get2([FromBody] EamuseXrpcData data, string model)
 {
     return(Get(data, model));
 }
Пример #11
0
 public Task <ActionResult <EamuseXrpcData> > GetRefId2([FromBody] EamuseXrpcData data)
 {
     return(GetRefId(data));
 }
Пример #12
0
 public ActionResult <EamuseXrpcData> Alive2([FromBody] EamuseXrpcData data, string model)
 {
     return(Alive(data, model));
 }
Пример #13
0
        public async Task <ActionResult <EamuseXrpcData> > Register([FromBody] EamuseXrpcData xrpcData)
        {
            try
            {
                XElement dataE   = xrpcData.Document.Element("call").Element("gameend").Element("data");
                XElement playerE = dataE.Element("player");

                xrpcData.Document = new XDocument(new XElement("response", new XElement("gameend")));

                if (playerE == null)
                {
                    return(xrpcData);
                }

                int jid = int.Parse(playerE.Element("jid").Value);

                JubeatProfile profile = await ctx.JubeatProfiles
                                        .Include(p => p.ClanData)
                                        .Include(p => p.ClanSettings)
                                        .Include(p => p.Jubilitys)
                                        .SingleOrDefaultAsync(p => p.ID == jid);

                var data     = profile.ClanData;
                var settings = profile.ClanSettings;

                if (profile == null || data == null || settings == null)
                {
                    return(NotFound());
                }

                XElement teamE = playerE.Element("team");
                data.Team     = byte.Parse(teamE.Attribute("id").Value);
                data.Street   = int.Parse(teamE.Element("street").Value);
                data.Section  = int.Parse(teamE.Element("section").Value);
                data.HouseNo1 = short.Parse(teamE.Element("house_number_1").Value);
                data.HouseNo1 = short.Parse(teamE.Element("house_number_2").Value);

                XElement infoE = dataE.Element("info");
                data.PlayTime = int.Parse(infoE.Element("play_time").Value);

                XElement pInfoE = playerE.Element("info");
                data.TuneCount       = int.Parse(pInfoE.Element("tune_cnt").Value);
                data.ClearCount      = int.Parse(pInfoE.Element("clear_cnt").Value);
                data.FcCount         = int.Parse(pInfoE.Element("fc_cnt").Value);
                data.ExCount         = int.Parse(pInfoE.Element("ex_cnt").Value);
                data.MatchCount      = int.Parse(pInfoE.Element("match_cnt").Value);
                data.BeatCount       = int.Parse(pInfoE.Element("beat_cnt").Value);
                data.SaveCount       = int.Parse(pInfoE.Element("save_cnt").Value);
                data.SavedCount      = int.Parse(pInfoE.Element("saved_cnt").Value);
                data.BonusTunePoints = int.Parse(pInfoE.Element("bonus_tune_points").Value);
                data.BonusTunePlayed = pInfoE.Element("is_bonus_tune_played").Value == "1";

                XElement jboxE = playerE.Element("jbox");
                data.JboxPoints = int.Parse(jboxE.Element("point").Value);

                XElement lastE = playerE.Element("last");
                settings.ExpertOption = sbyte.Parse(lastE.Element("expert_option").Value);
                settings.Sort         = sbyte.Parse(lastE.Element("sort").Value);
                settings.Category     = sbyte.Parse(lastE.Element("category").Value);

                XElement settingsE = lastE.Element("settings");
                settings.Marker       = sbyte.Parse(settingsE.Element("marker").Value);
                settings.Theme        = sbyte.Parse(settingsE.Element("theme").Value);
                settings.RankSort     = sbyte.Parse(settingsE.Element("rank_sort").Value);
                settings.ComboDisplay = sbyte.Parse(settingsE.Element("combo_disp").Value);
                settings.Matching     = sbyte.Parse(settingsE.Element("matching").Value);
                settings.Hard         = sbyte.Parse(settingsE.Element("hard").Value);
                settings.Hazard       = sbyte.Parse(settingsE.Element("hazard").Value);

                IEnumerable <XElement> tunes = dataE.Element("result").Elements("tune");

                foreach (XElement tune in tunes)
                {
                    XElement tunePlayer = tune.Element("player");
                    XElement tuneScore  = tunePlayer.Element("score");

                    int   musicId = int.Parse(tune.Element("music").Value);
                    sbyte seq     = sbyte.Parse(tuneScore.Attribute("seq").Value);

                    JubeatScore score = new JubeatScore()
                    {
                        ProfileID = profile.ID,
                        MusicID   = musicId,
                        Seq       = seq
                    };

                    score.Timestamp    = long.Parse(tune.Element("timestamp").Value);
                    score.Score        = int.Parse(tunePlayer.Element("score").Value);
                    score.Clear        = sbyte.Parse(tuneScore.Attribute("clear").Value);
                    score.IsHardMode   = tunePlayer.Element("is_hard_mode").Value == "1";
                    score.IsHazardMode = tunePlayer.Element("is_hazard_end").Value == "1";
                    score.NumPerfect   = short.Parse(tunePlayer.Element("nr_perfect").Value);
                    score.NumGreat     = short.Parse(tunePlayer.Element("nr_great").Value);
                    score.NumGood      = short.Parse(tunePlayer.Element("nr_good").Value);
                    score.NumPoor      = short.Parse(tunePlayer.Element("nr_poor").Value);
                    score.NumMiss      = short.Parse(tunePlayer.Element("nr_miss").Value);

                    string[] mbarStrs = tunePlayer.Element("play_mbar").Value.Split(' ');
                    score.Bar = Array.ConvertAll(mbarStrs, s => byte.Parse(s));

                    ctx.JubeatScores.Add(score);

                    JubeatHighscore highscore = ctx.JubeatHighscores
                                                .Where(s => s.MusicID == musicId && s.Seq == seq && s.ProfileID == profile.ID)
                                                .SingleOrDefault();

                    if (highscore == null)
                    {
                        highscore = new JubeatHighscore()
                        {
                            ProfileID = profile.ID,
                            MusicID   = musicId,
                            Seq       = seq
                        };

                        ctx.JubeatHighscores.Add(highscore);
                    }

                    if (score.Score > highscore.Score)
                    {
                        highscore.Timestamp = score.Timestamp;
                    }

                    highscore.Score      = int.Parse(tunePlayer.Element("best_score").Value);
                    highscore.Clear      = sbyte.Parse(tunePlayer.Element("best_clear").Value);
                    highscore.PlayCount  = int.Parse(tunePlayer.Element("play_cnt").Value);
                    highscore.ClearCount = int.Parse(tunePlayer.Element("clear_cnt").Value);
                    highscore.FcCount    = int.Parse(tunePlayer.Element("fc_cnt").Value);
                    highscore.ExcCount   = int.Parse(tunePlayer.Element("ex_cnt").Value);

                    mbarStrs      = tunePlayer.Element("mbar").Value.Split(' ');
                    highscore.Bar = Array.ConvertAll(mbarStrs, s => byte.Parse(s));
                }

                XElement jubility = playerE.Element("jubility");
                data.JubilityParam = int.Parse(jubility.Attribute("param").Value);

                profile.Jubilitys.Clear();

                foreach (XElement targetMusic in jubility.Element("target_music_list").Elements("target_music"))
                {
                    profile.Jubilitys.Add(new JubeatClanJubility()
                    {
                        MusicID    = int.Parse(targetMusic.Element("music_id").Value),
                        Seq        = sbyte.Parse(targetMusic.Element("seq").Value),
                        Score      = int.Parse(targetMusic.Element("score").Value),
                        Value      = int.Parse(targetMusic.Element("value").Value),
                        IsHardMode = targetMusic.Element("is_hard_mode").Value == "1"
                    });
                }

                await ctx.SaveChangesAsync();

                return(xrpcData);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(StatusCode(500));
            }
        }
Пример #14
0
        public ActionResult <EamuseXrpcData> List([FromBody] EamuseXrpcData data)
        {
            data.Document = new XDocument(new XElement("response", new XElement("package")));

            return(data);
        }
Пример #15
0
 public ActionResult <EamuseXrpcData> Inquire2([FromBody] EamuseXrpcData data)
 {
     return(Inquire(data));
 }
Пример #16
0
 public Task <ActionResult <EamuseXrpcData> > Authpass2([FromBody] EamuseXrpcData data)
 {
     return(Authpass(data));
 }
Пример #17
0
 public ActionResult <EamuseXrpcData> Put2([FromBody] EamuseXrpcData data)
 {
     return(Put(data));
 }
Пример #18
0
        public ActionResult <EamuseXrpcData> GetAgreement([FromBody] EamuseXrpcData data)
        {
            data.Document = new XDocument(new XElement("response", new XElement("jbox")));

            return(data);
        }
Пример #19
0
        public ActionResult <EamuseXrpcData> Get([FromBody] EamuseXrpcData data, [FromQuery] string model)
        {
            string url     = Request.Scheme + "://" + Request.Host.Host + ":" + (Request.Host.Port ?? Startup.Port);
            string coreUrl = url + "/core";
            string modelUrl;

            string[] modelItems;

            string[] coreItems = new[]
            {
                "cardmng",
                "facility",
                "message",
                "numbering",
                "package",
                "pcbevent",
                "pcbtracker",
                "pkglist",
                "posevent",
                "userdata",
                "userid",
                "eacoin",
            };

            if (model.StartsWith("L44:J:E:A:2018"))
            {
                modelItems = new[]
                {
                    "local",
                    "local2",
                    "lobby",
                    "lobby2"
                };

                modelUrl = url + "/L44/8";
            }
            else
            {
                return(NotFound());
            }

            XElement servicesElement = new XElement("services",
                                                    new XAttribute("expire", "600"),
                                                    new XAttribute("method", "get"),
                                                    new XAttribute("mode", "operation"),
                                                    new XAttribute("status", "0"));

            foreach (string coreItem in coreItems)
            {
                servicesElement.Add(new XElement("item", new XAttribute("name", coreItem), new XAttribute("url", coreUrl)));
            }

            foreach (string modelItem in modelItems)
            {
                servicesElement.Add(new XElement("item", new XAttribute("name", modelItem), new XAttribute("url", modelUrl)));
            }

            servicesElement.Add(new XElement("item", new XAttribute("name", "ntp"), new XAttribute("url", "ntp://pool.ntp.org/")));
            servicesElement.Add(new XElement("item", new XAttribute("name", "keepalive"), new XAttribute("url", "http://127.0.0.1/keepalive?pa=127.0.0.1&ia=127.0.0.1&ga=127.0.0.1&ma=127.0.0.1&t1=2&t2=10")));

            data.Document = new XDocument(new XElement("response", servicesElement));

            return(data);
        }