Exemplo n.º 1
0
 public void Handle(XmlMessage message)
 {
     message.Write("<cross-domain-policy><allow-access-from domain='*' to-ports='5588'/></cross-domain-policy>");
 }
Exemplo n.º 2
0
 // 请选择消息
 public string ReadMassage(XmlMessage file)
 {
     return(MessageList[(int)file]);
 }
        void XmlMessageSystem_must_work()
        {
            Within(TimeSpan.FromSeconds(60), () =>
            {
                RunOn(() =>
                {
                    _messageSystem.Start(_nodeConfig);
                }, _deployTarget1, _deployTarget2);
                EnterBarrier("2-deploy-target-started");

                RunOn(() =>
                {
                    _messageSystem.Start(_nodeConfig);
                    var sender = new ActorRefMessageReceiver <XmlMessage>(TestActor);
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question1></question1>"), sender);
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question1></question1>"), sender);
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question1></question1>"), sender);
                    new[] { ExpectMsg <BytesMessage>(), ExpectMsg <BytesMessage>(), ExpectMsg <BytesMessage>() }.Select(bm => XmlMessage.FromBytes(bm.Bytes).Content)
                    .Should().OnlyHaveUniqueItems();
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question2>log1</question2>"), sender);
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question2>log2</question2>"), sender);
                    _messageSystem.SendMessage(XmlMessage.FromString(@"<question2>log3</question2>"), sender);
                    new[] { ExpectMsg <BytesMessage>(), ExpectMsg <BytesMessage>(), ExpectMsg <BytesMessage>() }.Select(bm => XmlMessage.FromBytes(bm.Bytes).Content)
                    .Should().OnlyHaveUniqueItems();
                }, _deployer);

                EnterBarrier("3-done");
            });
        }
Exemplo n.º 4
0
        void ActorDirectoryMustGetInSync()
        {
            Within(TimeSpan.FromSeconds(60), () =>
            {
                RunOn(() =>
                {
                    string puId = "test1";
                    _actorDirectory
                    .PublishPatterns(
                        _nodeConfig,
                        (
                            puId: puId,
                            actorPath: ActorPath.Parse(string.Format("akka://cluster/user/{0}", Hexagon.Constants.GetProcessingUnitName(_nodeConfig.NodeId, puId))),
                            patterns: new[]
                    {
                        new XmlMessagePattern(
                            new []
                        {
                            @"/root/value1[. = 1]",
                            @"/root/value2[@attr = ""a""]"
                        }),
                        new XmlMessagePattern(
                            new []
                        {
                            @"/root/value2[. = 2]"
                        })
                    }
                        )
                        );
                }, _first);

                RunOn(() =>
                {
                    string puId = "test2";
                    _actorDirectory
                    .PublishPatterns(
                        _nodeConfig,
                        (
                            puId: puId,
                            actorPath: ActorPath.Parse(string.Format("akka://cluster/user/{0}", Hexagon.Constants.GetProcessingUnitName(_nodeConfig.NodeId, puId))),
                            patterns: new[]
                    {
                        new XmlMessagePattern(
                            new []
                        {
                            @"/root/value3[. = 3]"
                        })
                    }));
                }, _second);

                RunOn(() =>
                {
                    _actorDirectory.PublishPatterns(null);
                }, _third);

                EnterBarrier("2-registered");

                var timeFrame = TimeSpan.FromSeconds(_nodeConfig.GossipTimeFrameInSeconds);
                System.Threading.Thread.Sleep(timeFrame);

                Cluster.State.Members.Where(member => member.Status == MemberStatus.Up).Should().HaveCount(3, "there should be 3 up cluster nodes");

                bool ready = _actorDirectory.IsReady(_nodeConfig.GossipSynchroAttemptCount, timeFrame);
                ready.Should().BeTrue("all nodes data must be ready");

                EnterBarrier("3-ready");

                RunOn(() =>
                {
                    var patternFactory = new XmlMessagePatternFactory();
                    string xml         = @"<root><value1>1</value1><value2 attr=""b"">2</value2><value3>3</value3></root>";
                    var actorPaths     = _actorDirectory.GetMatchingActorsAsync(XmlMessage.FromString(xml), patternFactory).Result.Select(ma => ma.Path);
                    actorPaths.Should().BeEquivalentTo($"/user/{_first.Name}_test1", $"/user/{_second.Name}_test2");
                }, _first, _second, _third);

                EnterBarrier("4-done");

                _actorDirectory.Dispose();

                EnterBarrier("5-exit");
            });
Exemplo n.º 5
0
 public static void SendMessage(NetworkStream stream, string message)
 {
     byte[] msg = System.Text.Encoding.ASCII.GetBytes(XmlMessage.Protocole("message", message));
     stream.Write(msg, 0, msg.Length);
 }
Exemplo n.º 6
0
        public void Handle(XmlMessage message)
        {
            var username = message.Body.SelectSingleNode("//msg/body/login/nick").InnerText.Split(Convert.ToChar("~"))[1].ToLower();
            var password = message.Body.SelectSingleNode("/msg/body/login/pword").InnerText;

            MySqlDataReader reader = new ReaderQuery().Execute(
                "SELECT * FROM meh_users WHERE Username=@user AND Password=@pass",
                new Dictionary <string, object>()
            {
                { "user", username },
                { "pass", password }
            }
                );

            if (reader.Read())
            {
                PlayerInfo player = new PlayerInfo
                {
                    UserID            = reader.GetInt32("id"),
                    CharID            = reader.GetInt32("id"),
                    HairID            = reader.GetInt32("HairID"),
                    bPermaMute        = false,
                    dCreated          = reader.GetString("DateCreated"),
                    dUpgExp           = reader.GetString("UpgradeExpire"),
                    iAge              = reader.GetInt32("Age"),
                    iBagSlots         = reader.GetInt32("BagSlots"),
                    iBankSlots        = reader.GetInt32("BankSlots"),
                    iCP               = 0,
                    iDailyAds         = 0,
                    iFounder          = 0,
                    iHouseSlots       = reader.GetInt32("HouseSlots"),
                    iUpg              = 0,
                    iUpgDays          = reader.GetInt32("UpgradeDays"),
                    intAccessLevel    = reader.GetInt32("Access"),
                    intActivationFlag = reader.GetInt32("ActivationFlag"),
                    intCoins          = reader.GetInt32("Coins"),
                    intGold           = reader.GetInt32("Gold"),
                    intColorAccessory = reader.GetInt32("ColorAccessory"),
                    intColorBase      = reader.GetInt32("ColorBase"),
                    intColorEye       = reader.GetInt32("ColorEye"),
                    intColorHair      = reader.GetInt32("ColorHair"),
                    intColorSkin      = reader.GetInt32("ColorSkin"),
                    intColorTrim      = reader.GetInt32("ColorTrim"),
                    intExp            = reader.GetInt32("Exp"),
                    intExpToLevel     = 50000,
                    intHP             = 1000,
                    intHPMax          = 1000,
                    intMP             = 100,
                    intMPMax          = 100,
                    intHits           = 1,
                    intLevel          = reader.GetInt32("Level"),
                    strEmail          = reader.GetString("Email"),
                    sHouseInfo        = new JArray(),
                    strGender         = reader.GetString("Gender"),
                    strHairFilename   = reader.GetString("HairFile"),
                    strHairName       = reader.GetString("HairName"),
                    strUsername       = reader.GetString("Username").ToLower(),
                    iBoostCP          = 0,
                    iBoostG           = 0,
                    iBoostRep         = 0,
                    iBoostXP          = 0,
                    iDBCP             = 0,
                    intDBExp          = reader.GetInt32("Exp"),
                    intDBGold         = reader.GetInt32("Gold"),
                    sCountry          = "xx",
                    strMapName        = "battleon",
                    strQuests         = "00000000000000000000000000000000000000000000000000000000000000000000000000000000A0000000000000000000",
                    strQuests2        = "00000000000000000000000000000000000000000000000000000000000000000000000000000000A0000000000000000000",
                    strQuests3        = "00000000000000000000000000000000000000000000000000000000000000000000000000000000A0000000000000000000",
                    bitSuccess        = 1,
                    lastArea          = "battleon-2"
                };

                var d = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");

                message.Write("%xt%server%-1%Accepting party invites.%");
                message.Write("%xt%server%-1%Accepting goto requests.%");
                message.Write("%xt%server%-1%Accepting Friend requests.%");
                message.Write("%xt%server%-1%Accepting PMs.%");
                message.Write("%xt%server%-1%Ability ToolTips will always show on mouseover.%");
                message.Write("%xt%server%-1%Accepting duel invites.%");
                message.Write("%xt%server%-1%Accepting guild invites.%");
                message.Write($"%xt%loginResponse%-1%true%{player.CharID}%{player.strUsername}%{Settings.Motd}%{d}%sNews={Settings.News},sMap={Settings.Map},sBook={Settings.Book},sFBC={Settings.Fbc},sAssets={Settings.Assets},sWTSandbox=false,gMenu={Settings.GameMenu},sVideo=MoviePlayer/MoviePlayer1.swf1r118222%");
            }

            reader.Close();
            reader.Dispose();
        }
Exemplo n.º 7
0
 public override object FromBinary(byte[] bytes, Type type) => XmlMessage.FromBytes(bytes);
Exemplo n.º 8
0
        /// <summary>
        /// Load your graphics content.
        /// </summary>
        protected override void LoadContent()
        {
            // Load content belonging to the screen manager.
            ContentManager content = Game.Content;

            spriteBatch = new SpriteBatch(GraphicsDevice);
            xmlMessage = content.Load<XmlMessage>("MessageConfig");
            blankTexture = content.Load<Texture2D>("blank");

            // Tell each of the screens to load their content.
            foreach (GameScreen screen in screens)
            {
                screen.LoadContent();
            }
        }
Exemplo n.º 9
0
        void XmlMessageSystem_must_work()
        {
            Within(TimeSpan.FromSeconds(30), () =>
            {
                RunOn(() =>
                {
                    _registry.AddAsyncAction(
                        new XmlMessagePattern($@"/request[@routeto = ""{_first.Name}""]"),
                        async(message, sender, self, resource, messageSystem, logger) =>
                    {
                        XmlMessage answer = await messageSystem.SendMessageAndAwaitResponseAsync(XmlMessage.FromString(@"<question>Why?</question>"), self);
                        answer.Should().Match <XmlMessage>(mess => mess.Match(@"/answer[. = ""Because.""]"));
                        TestActor.Tell("OK");
                    },
                        _first.Name);
                }, _first);

                RunOn(() =>
                {
                    _registry.AddAction(
                        new XmlMessagePattern(true, @"/request"),
                        (message, sender, self, resource, messageSystem, logger) =>
                    {
                        TestActor.Tell("OK");
                    },
                        _second.Name);
                    _registry.AddPowershellScriptBody(
                        new XmlMessagePattern(@"/question[. = ""Why?""]"),
                        @"'<answer>Because.</answer>'",
                        _second.Name
                        );
                }, _second);

                _messageSystem.Start(_nodeConfig, _registry);
                EnterBarrier("2-started");

                RunOn(() =>
                {
                    string xml = @"<request routeto=""first"">GO</request>";
                    _messageSystem.SendMessage(XmlMessage.FromString(xml), null);
                }, _third);
                RunOn(() => ExpectMsg <string>("OK"), _first);
                RunOn(() => ExpectMsg <string>("OK"), _second);

                EnterBarrier("3-done");
            });
        }
Exemplo n.º 10
0
 protected override void EndProcessing()
 {
     System.SendMessage(XmlMessage.FromXml(Message), Sender);
 }
Exemplo n.º 11
0
 public void Handle(XmlMessage message)
 {
     message.Write("<cross-domain-policy><allow-access-from domain='*' to-ports='5588' /></cross-domain-policy>");
     message.Write("<msg t='sys'><body action='apiOK' r='0'></body></msg>");
 }
#pragma warning disable CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
        public async Task HandleMessageAsync(IMiraiHttpSession client, IGroupMessageEventArgs e)
#pragma warning restore CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
        {
            try
            {
                var session = MainHolder.session;

                WatchDog.FeedDog("grpmsg");
                pThreadPool pool = MainHolder.pool;
                //MainHolder.Logger.Debug("CQPLUGIN", "Event_GroupMessageFired");
                MainHolder.MsgCount++;
                SecondlyTask.lastrecv = DateTime.Now;
                if (true)
                {
                    IGroupInfo       gpinfo = e.Sender.Group;
                    IGroupMemberInfo gminfo = e.Sender;
                    string           gpname = DataBase.me.getGroupName(gpinfo.Id);
                    if (!DataBase.me.connected)
                    {
                        MainHolder.Logger.Error("数据库", "数据库未连接");
                    }

                    foreach (IChatMessage msg in e.Chain)
                    {
                        if (msg is not UnknownChatMessage)//不处理UnknownChatMessage
                        {
                            switch (msg.Type)
                            {
                            case "Plain":
                            {
                                PlainMessage message = (PlainMessage)msg;
                                if (!DataBase.me.recQQmsg(e.Sender.Id, e.Sender.Group.Id, message.Message))
                                {
                                    MainHolder.Logger.Error("数据库", "未能将消息存入数据库");
                                }
                                //message.Message
                                {
                                    string abvn = AVFinder.abvFromString(message.Message);
                                    if (abvn != null && abvn != "")
                                    {
                                        processVideoBilibili(e, abvn);
                                    }
                                }
                                Commands.Proc(session, e, message.Message);
                            }
                            break;

                            case "Xml":
                            {
                                XmlMessage message = (XmlMessage)msg;
                                if (!DataBase.me.recQQmsg(e.Sender.Id, e.Sender.Group.Id, message.Xml))
                                {
                                    MainHolder.Logger.Error("数据库", "未能将消息存入数据库");
                                }

                                if (Commands.cocogroup == e.Sender.Group.Id)
                                {
                                    MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "[Xml解析]\n" + message.Xml);
                                }

                                XmlDocument doc = new XmlDocument();
                                doc.LoadXml(message.Xml);
                                {
                                    if (doc["msg"] == null)
                                    {
                                        MainHolder.broadcaster.SendToAnEgg(e.Sender.Group.Id + "无msg标签的Xml消息\n" + message.Xml);
                                    }
                                    if (doc["msg"].HasAttribute("action") && doc["msg"].GetAttribute("action") == "viewMultiMsg" && DataBase.me.isAdminGroup(e.Sender.Group.Id))
                                    {
                                        string fname      = doc["msg"].GetAttribute("m_fileName");
                                        string fresid     = doc["msg"].GetAttribute("m_resid");
                                        int    tsum       = int.Parse(doc["msg"].GetAttribute("tSum"));
                                        int    flag       = int.Parse(doc["msg"].GetAttribute("flag"));
                                        int    serviceID  = int.Parse(doc["msg"].GetAttribute("serviceID"));
                                        int    m_fileSize = int.Parse(doc["msg"].GetAttribute("m_fileSize"));
                                        DataBase.me.saveMessageGroup(fname, fresid, tsum, flag, serviceID, m_fileSize);
                                        MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "[消息存证]\n该条消息记录已提交至腾讯服务器\n存根ID:" + fname);
                                        return;
                                        //不再处理该条消息
                                    }
                                    if (doc["msg"]["source"] != null && doc["msg"]["source"].HasAttribute("name"))
                                    {
                                        switch (doc["msg"]["source"].GetAttribute("name"))
                                        {
                                        case "哔哩哔哩":                                                               //B站分享
                                            if (doc["msg"].GetAttribute("url").IndexOf("/live.bilibili.com/") > 0) //直播分享
                                            {
                                            }
                                            if (doc["msg"].GetAttribute("url").IndexOf("/b23.tv/") > 0)            //可能是视频分享
                                            {
                                                try
                                                {
                                                    string bvn = BiliApi.AVFinder.bvFromB23url(doc["msg"].GetAttribute("url"));
                                                    if (bvn != null)            //真的是视频分享
                                                    {
                                                        processVideoBilibili(e, bvn);
                                                        return;
                                                    }
                                                }
                                                catch (Exception)
                                                {
                                                }
                                            }
                                            break;

                                        case "网页分享":
                                            if (doc["msg"].GetAttribute("url").IndexOf("/live.bilibili.com/") > 0)            //直播分享
                                            {
                                            }
                                            if (doc["msg"].GetAttribute("url").IndexOf("/www.bilibili.com/video/") > 0)            //视频分享
                                            {
                                                string bvn = BiliApi.AVFinder.bvFromPlayURL(doc["msg"].GetAttribute("url"));
                                                if (bvn != null)            //真的是视频分享
                                                {
                                                    processVideoBilibili(e, bvn);
                                                    return;
                                                }
                                            }
                                            break;

                                        default:
                                            break;
                                        }
                                    }
                                }
                            }
                            break;

                            case "Json":
                            {
                                JsonMessage message = (JsonMessage)msg;
                                if (Commands.cocogroup == e.Sender.Group.Id)
                                {
                                    MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "[Json解析]\n" + message.Json);
                                }
                                if (!DataBase.me.recQQmsg(e.Sender.Id, e.Sender.Group.Id, message.Json))
                                {
                                    MainHolder.Logger.Error("数据库", "未能将消息存入数据库");
                                }
                            }
                            break;

                            case "App":
                            {
                                AppMessage message = (AppMessage)msg;
                                if (Commands.cocogroup == e.Sender.Group.Id)
                                {
                                    MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "[AppContent解析]\n" + message.Content);
                                }
                                if (!DataBase.me.recQQmsg(e.Sender.Id, e.Sender.Group.Id, message.Content))
                                {
                                    MainHolder.Logger.Error("数据库", "未能将消息存入数据库");
                                }
                                {
                                    string abvn = null;
                                    try
                                    {
                                        JObject jb = JObject.Parse(message.Content);
                                        abvn = AVFinder.bvFromB23url(jb["meta"]["detail_1"]["qqdocurl"].ToString());
                                    }
                                    catch
                                    {
                                    }
                                    if (abvn != null && abvn != "")
                                    {
                                        processVideoBilibili(e, abvn);
                                    }
                                }
                            }
                            break;

                            case "Source":
                                break;

                            case "Image":
                            {
                                /*try
                                 * {
                                 *  ImageMessage message = (ImageMessage)msg;
                                 *  Ticket t = TicketCoder.Decode(new Bitmap(PicLoader.loadPictureFromURL(message.Url)));
                                 *  string l = "未知";
                                 *  switch (t.Data.Level)
                                 *  {
                                 *      case Ticket.CrewLevel.舰长:
                                 *          l = "舰长";
                                 *          break;
                                 *      case Ticket.CrewLevel.总督:
                                 *          l = "总督";
                                 *          break;
                                 *      case Ticket.CrewLevel.提督:
                                 *          l = "提督";
                                 *          break;
                                 *  }
                                 *  BiliUser bu = new BiliUser(t.Data.Uid, MainHolder.biliapi);
                                 *  MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "[船票]\n" +
                                 *      "版本=" + t.Data.SpecType + "\n" +
                                 *      "绑定账号=" + bu.name + "#" + t.Data.Uid + "\n" +
                                 *      "签发时间=" + t.Data.GenerateTime.ToString("yyyy MM dd HH:mm:ss") + "\n" +
                                 *      "等级=" + l + "\n" +
                                 *      "签名有效");
                                 * }
                                 * catch (SignatureInvalidException err)
                                 * {
                                 *  MainHolder.broadcaster.SendToGroup(e.Sender.Group.Id, "该船票签名无效");
                                 * }
                                 * catch { }
                                 */
                            }
                            break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception err)
            {
                MainHolder.broadcaster.BroadcastToAdminGroup("[Exception]\n这条消息可能意味着机器人发生了错误。它仍在继续运行,但可能不是很稳定。下面的信息用来帮助鸡蛋定位错误,管理不必在意。\n[群消息接收处理]" + err.Message + "\n\n堆栈跟踪:\n" + err.StackTrace);
            }
            return;
        }