public AramisTCPServer(ReceiveMessage receiveMessage, ArrayList allowedIP, string serverIP)
        {
            serverActive = false;
            NeedToUpdateIpList = new ArrayList();

            if (!SetConfiguration(allowedIP, serverIP))
                {
                return;
                }

            try
                {
                Console.WriteLine("\n\t***\tTCP Server [ {0} ] is ready.\n\n\n", IpAddress);
                TCPServer = new TcpListener(IPAddress.Parse(IpAddress), SERVER_PORT);

                }
            catch (Exception exp)
                {
                Console.WriteLine("Error during server creating: {0}.", exp.Message);
                Console.ReadLine();
                Application.Exit();
                return;
                }

            #region Creating CatchingConnection, Starting server

            try
                {
                ClientConnector = new CatchingConnections(TCPServer, AllowIpList, NeedToUpdateIpList,
                                                          WriteToFileAboutUpdate, FullUpdatePath, StringConnection,
                                                          receiveMessage);

                }
            catch (Exception e)
                {
                Console.WriteLine("Error CatchingConnections:" + e.Message);
                return;
                }

            CatchingConnectionThread = new Thread(ClientConnector.Start);
            CatchingConnectionThread.Name = "CatchingConnectionsThread";
            CatchingConnectionThread.IsBackground = true;

            try
                {
                TCPServer.Start();
                }
            catch (Exception exp)
                {
                Console.WriteLine("Error during server starting: {0}.", exp.Message);
                return;
                }

            CatchingConnectionThread.Start();

            #endregion

            serverActive = true;
        }
Example #2
0
        public DataTerminalSession(TcpClient MyTCPClient, NetworkStream MyTCPStream, CloseConnectionDelegate MyCloseConnectionMethod, UpdateCompleteDelegate InformAboutUpdateComplete, ReceiveMessage receiveMessage, Guid sessionId)
        {
            TCPClient = MyTCPClient;
            TCPStream = MyTCPStream;
            DeleteConnection = MyCloseConnectionMethod;
            this.receiveMessage = receiveMessage;

            this.SessionId = sessionId;

            //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""newwms"";");
            //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""iboya81""; Usr=""Оборский Д.В.""; Pwd=""123456""");
            //Server1CAgent = new HandlingVia1CServer(@"File=""C:\Documents and Settings\Reshifa\My Documents\InfoBase9""; Usr=""Denis.V.O""; Pwd=""123""");
            this.InformAboutUpdateComplete = InformAboutUpdateComplete;
        }
Example #3
0
        public CatchingConnections(TcpListener MyTCPServer, ArrayList allowIpList, ArrayList NeedToUpdateIpList, UpdateCompleteDelegate InformAboutUpdateComplete, string FullUpdatePath, string Server1CConnectionString, ReceiveMessage receiveMessage)
        {
            TCPServer = MyTCPServer;
            StorekeeperSessions = new List<DataTerminalSession>();
            this.AllowIpList = new Dictionary<string, string>();
            this.NeedToUpdateIpList = NeedToUpdateIpList;
            this.InformAboutUpdateComplete = InformAboutUpdateComplete;
            this.FullUpdatePath = FullUpdatePath;
            this.receiveMessage = receiveMessage;

            foreach (string allowIPAddress in allowIpList)
                {
                AllowIpList.Add(allowIPAddress, Guid.NewGuid().ToString());
                }
            Console.WriteLine();
        }
Example #4
0
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     return(new TextSendMessage(message, Content.ToString()));
 }
Example #5
0
 public virtual ReplyBaseMessage On_Location_selectEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #6
0
 public ReplyBaseMessage On_DefaultEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #7
0
 public virtual ReplyBaseMessage On_CLICKEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #8
0
 public static ReceiveMessageBehavior <T> ReceiveMessage <T>(ReceiveMessage <T> onMessage) =>
 new ReceiveMessageBehavior <T>(onMessage);
Example #9
0
        /// <summary>
        /// 执行消息回复
        /// </summary>
        /// <param name="MessageHandler"></param>
        /// <returns></returns>
        public string Excute()
        {
            var Request = HttpContext.Current.Request;


            string signature = Request["signature"];
            string timestamp = Request["timestamp"];
            string nonce     = Request["nonce"];
            string echostr   = Request["echostr"];

            string encrypt_type  = Request["encrypt_type"];  // aes 是安全模式。  null是明文模式
            string msg_signature = Request["msg_signature"]; //消息加密后 会有这个参数

            //解加密类
            Utils.Tencent.WXBizMsgCrypt wxcpt = new Utils.Tencent.WXBizMsgCrypt(_token, _EncodingAESKey, _appId);

            //获取xml
            Stream xmlStream = Request.InputStream;
            string postData  = "";

            using (StreamReader sr = new StreamReader(xmlStream))
            {
                postData = sr.ReadToEnd();
            }

            //收到的消息
            ReceiveMessage receiveMsg = null;

            //是否安全模式?
            if (encrypt_type == "aes")
            {
                string str = "";
                int    i   = wxcpt.DecryptMsg(msg_signature, timestamp, nonce, postData, ref str);
                if (i == 0)
                {
                    receiveMsg = XMLHelper.XMLDeserializer <ReceiveMessage>(new MemoryStream(Encoding.UTF8.GetBytes(str)));
                }
            }
            else
            {
                receiveMsg = XMLHelper.XMLDeserializer <ReceiveMessage>(new MemoryStream(Encoding.UTF8.GetBytes(postData)));
            }


            //避免重复接受
            if (receiveMsg.MsgId != null)
            {
                if (CacheHelper.GetCache(receiveMsg.MsgId) != null)
                {
                    return("");
                }
                CacheHelper.SetCache(receiveMsg.FromUserName + receiveMsg.CreateTime, "xx", new TimeSpan(0, 0, 1, 0));
            }



            //执行MessageHandler
            ReplyBaseMessage replyMsg = ExcuteMessageHandler(receiveMsg);

            if (replyMsg == null)
            {
                return("");
            }

            //是否安全模式?
            if (encrypt_type == "aes")
            {
                string relMsg     = XMLHelper.XMLSerializer <ReplyBaseMessage>(replyMsg);
                string EncryptMsg = "";
                //加密
                wxcpt.EncryptMsg(relMsg, timestamp, nonce, ref EncryptMsg);
                return(EncryptMsg);
            }
            else
            {
                return(XMLHelper.XMLSerializer <ReplyBaseMessage>(replyMsg));
            }
        }
Example #10
0
 public void RegisterReceiveMessageEvent(ReceiveMessage <TResponsePacket> receiveMessage)
 {
     MessageReceivedEvent += receiveMessage;
 }
 protected virtual Task <MessageProcessInstruction> OnReceiveMessage(string routingKeyOrQueueName, string consumerTag, long firstErrorTimestamp, string exchange, string message, string messageAdditionalInfo)
 {
     return(ReceiveMessage?.Invoke(routingKeyOrQueueName, consumerTag, firstErrorTimestamp, exchange, message, messageAdditionalInfo));
 }
Example #12
0
 public void OnReceiveMessage(MessageDelegateArgs args)
 {
     ReceiveMessage?.Invoke(this, args);
 }
Example #13
0
 public virtual ReplyBaseMessage On_Scancode_waitmsgEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #14
0
 public virtual ReplyBaseMessage On_ShortVideoEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #15
0
 public virtual ReplyBaseMessage On_Pic_weixinEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #16
0
 public virtual ReplyBaseMessage On_Pic_sysphotoEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #17
0
 public virtual ReplyBaseMessage On_Pic_photo_or_albumEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
Example #18
0
        static void Main(string[] args)
        {
            IniConfig ini = new IniConfig("Config.ini");

            ini.Load();
            try
            {
                Save.curentQQ = ini.Object["Config"]["QQ"].GetValueOrDefault((long)0);
                Save.url      = ini.Object["Config"]["url"].GetValueOrDefault("http://127.0.0.1:8888/");
            }
            catch
            {
                ini.Clear();
                ini.Object.Add(new ISection("Config"));
                ini.Object["Config"].Add("QQ", 0);
                ini.Object["Config"].Add("url", "");
                long qq;
                while (true)
                {
                    Console.Write("请输入目前服务端挂着的QQ号:");
                    if (long.TryParse(Console.ReadLine(), out qq))
                    {
                        break;
                    }
                }
                Save.curentQQ = qq;
                Console.Write("请输入用于连接服务端的url:");
                string url = Console.ReadLine();
                if (url.Reverse().First() != '/')
                {
                    url += '/';
                }
                ini.Object["Config"]["QQ"]  = new IValue(qq);
                ini.Object["Config"]["url"] = new IValue(Save.url);
                ini.Save();
                Console.WriteLine("需要修改请在目录下的Config.ini内修改");
            }
            socket          = new Client(Save.url);
            socket.Opened  += SocketOpened;
            socket.Message += SocketMessage;
            socket.SocketConnectionClosed += SocketConnectionClosed;
            socket.Error += SocketError;
            string QQ = Save.curentQQ.ToString();//框架在线的QQ号

            pluginManagment.Load();
            LogHelper.WriteLine("遍历启动事件……");
            pluginManagment.CallFunction("StartUp");
            pluginManagment.CallFunction("Enable");
            NotifyIconHelper.ShowNotifyIcon();
            LogHelper.WriteLine("插件载入完成,开始连接服务器");
            socket.Connect();
            // register for 'connect' event with io server
            socket.On("connect", (fn) =>
            {
                LogHelper.WriteLine(((ConnectMessage)fn).ConnectMsg.ToString());
                //重连成功 取得 在线QQ的websocket 链接connid
                //Ack
                socket.Emit("GetWebConn", QQ, null, (callback) =>
                {
                    //var jsonMsg = callback as string;
                    //LogHelper.WriteLine(string.Format("callback [root].[messageAck]: {0} \r\n", jsonMsg));
                    LogHelper.WriteLine($"服务器连接成功,开始处理事件……");
                }
                            );
                //获取已登录QQ的群列表
                //socket.Emit("GetGroupList", QQ);

                //获取已登录QQ的好友列表
                //socket.Emit("GetQQUserList", QQ);
                //获取已登录QQ的群123456789成员列表
                //
                //string JSON = "{" + string.Format("\"Uid\":\"{0}\",\"Group\":{1}", QQ, 123456789) + "}";
                //socket.Emit("GetGroupUserList", JSON.Replace("\"", "\\\""));//json 需要处理一下转义

                //获取登录二维码
                socket.Emit("GetQrcode", "", null, (callback) =>
                {
                    var jsonMsg = callback as string;
                    LogHelper.WriteLine(string.Format("GetQrcode From Websocket: {0} \r\n", jsonMsg));
                }
                            );
            });
            //二维码检测事件
            socket.On("OnCheckLoginQrcode", (fn) =>
            {
                LogHelper.WriteLine("OnCheckLoginQrcode\n" + ((JSONMessage)fn).MessageText);
            });
            //收到群消息的回调事件
            socket.On("OnGroupMsgs", (fn) =>
            {
                //群文件合并到此事件
                //{"FileID":"/9d784a08-d918-11ea-a715-5452007bdaa4","FileName":"Log.lua","FileSize":1159,"Tips":"[群文件]"}
                //语音消息
                //{"Tips":"[语音]","Url":"http://grouptalk.c2c.qq.com/?ver=0\u0026rkey=3062020101045b30590201010201010204b40f1411042439306a33504b526d42394567685178716f6f464c4c67676639234e5f4a42535a7734764202045f2e03de041f0000000866696c6574797065000000013100000005636f64656300000001310400\u0026filetype=1\u0026voice_codec=1"}
                Task task = new Task(() =>
                {
                    Stopwatch stopwatch = new Stopwatch();
                    stopwatch.Start();
                    ReceiveMessage groupMessage = JsonConvert.DeserializeObject <ReceiveMessage>(((JSONMessage)fn).MessageText);
                    string message           = ProgressMessage.Start(groupMessage);
                    ReceiveMessage.Data data = groupMessage.CurrentPacket.Data;
                    if (groupMessage.CurrentPacket.Data.FromUserId == Save.curentQQ)
                    {
                        Dll.AddMsgToSave(new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message));
                        return;
                    }
                    LogHelper.WriteLine(CQLogLevel.InfoReceive, "[↓]收到消息", $"来源群:{data.FromGroupId}({data.FromGroupName}) 来源QQ:{data.FromUserId}({data.FromNickName}) {message}");
                    var c = new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message);
                    Dll.AddMsgToSave(c);
                    pluginManagment.CallFunction("GroupMsg", 2, Save.MsgList.Count + 1, data.FromGroupId, data.FromUserId,
                                                 "", Marshal.StringToHGlobalAnsi(message), 0);
                    stopwatch.Stop();
                    LogHelper.WriteLine($"耗时 {stopwatch.ElapsedMilliseconds} ms");
                }); task.Start();
                // new Event_GroupMessage().GroupMessage(new object(), e);
            });
            //收到好友消息的回调事件
            socket.On("OnFriendMsgs1", (fn) =>
            {
                Task task = new Task(() =>
                {
                    Stopwatch stopwatch = new Stopwatch();
                    stopwatch.Start();
                    ReceiveMessage groupMessage = JsonConvert.DeserializeObject <ReceiveMessage>(((JSONMessage)fn).MessageText);
                    string message           = ProgressMessage.Start(groupMessage);
                    ReceiveMessage.Data data = groupMessage.CurrentPacket.Data;
                    if (groupMessage.CurrentPacket.Data.FromUserId == Save.curentQQ)
                    {
                        Dll.AddMsgToSave(new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message));
                        return;
                    }
                    LogHelper.WriteLine(CQLogLevel.InfoReceive, "[↓]收到消息", $"来源群:{data.FromGroupId}({data.FromGroupName}) 来源QQ:{data.FromUserId}({data.FromNickName}) {message}");
                    var c = new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message);
                    Dll.AddMsgToSave(c);
                    pluginManagment.CallFunction("PrivateMsg", 11, Save.MsgList.Count + 1, data.FromUserId, Marshal.StringToHGlobalAnsi(message), 0);
                    stopwatch.Stop();
                    LogHelper.WriteLine($"耗时 {stopwatch.ElapsedMilliseconds} ms");
                }); task.Start();
            });
            //统一事件管理如好友进群事件 好友请求事件 退群等事件集合
            socket.On("OnEvents", (fn) =>
            {
                Task task = new Task(() =>
                {
                    JObject events   = JObject.Parse(((JSONMessage)fn).MessageText);
                    Requests request = new Requests();
                    switch (events["CurrentPacket"]["Data"]["EventName"].ToString())
                    {
                    case "ON_EVENT_GROUP_JOIN":    //入群事件 _eventSystem_GroupMemberIncrease id=7
                        long GroupJoin_JoinGroup, GroupJoin_JoinUin, GroupJoin_InviteUin;
                        string GroupJoin_JoinUserName;
                        JToken GroupJoin_data  = events["CurrentPacket"]["Data"]["EventData"];
                        GroupJoin_JoinGroup    = Convert.ToInt64(events["CurrentPacket"]["Data"]["EventMsg"]["FromUin"].ToString());
                        GroupJoin_JoinUin      = Convert.ToInt64(GroupJoin_data["UserID"].ToString());
                        GroupJoin_JoinUserName = GroupJoin_data["UserName"].ToString();
                        GroupJoin_InviteUin    = Convert.ToInt64(GroupJoin_data["InviteUin"].ToString());
                        if (GroupJoin_JoinUin != Save.curentQQ)
                        {
                            pluginManagment.CallFunction("GroupMemberIncrease", 1, GetTimeStamp(), GroupJoin_JoinGroup, 10000, GroupJoin_JoinUin);
                        }
                        LogHelper.WriteLine($"入群事件 群{GroupJoin_JoinGroup}加入{GroupJoin_JoinUserName}({GroupJoin_JoinUin})");
                        break;

                    case "ON_EVENT_GROUP_EXIT":    //退群事件 _eventSystem_GroupMemberDecrease id=6
                        long GroupExit_FromUin, GroupExit_UserID;
                        JToken GroupExit_data = events["CurrentPacket"]["Data"];
                        GroupExit_FromUin     = Convert.ToInt64(GroupExit_data["EventMsg"]["FromUin"].ToString());
                        GroupExit_UserID      = Convert.ToInt64(GroupExit_data["EventData"]["UserID"].ToString());
                        pluginManagment.CallFunction("GroupMemberDecrease", 1, GetTimeStamp(), GroupExit_FromUin, 10000, GroupExit_UserID);
                        LogHelper.WriteLine($"退群事件 {GroupExit_UserID}退出群{GroupExit_FromUin} ");
                        break;

                    case "ON_EVENT_GROUP_ADMIN":    //群管变动事件 _eventSystem_GroupAdmin id=5
                        long GroupAdmin_GroupID, GroupAdmin_UserID, GroupAdmin_Flag;
                        JToken GroupAdmin_data = events["CurrentPacket"]["Data"]["EventData"];
                        GroupAdmin_GroupID     = Convert.ToInt64(GroupAdmin_data["GroupID"].ToString());
                        GroupAdmin_UserID      = Convert.ToInt64(GroupAdmin_data["UserID"].ToString());
                        GroupAdmin_Flag        = Convert.ToInt64(GroupAdmin_data["Flag"].ToString());
                        pluginManagment.CallFunction("AdminChange", 1, GetTimeStamp(), GroupAdmin_GroupID, GroupAdmin_UserID);
                        LogHelper.WriteLine($"群管理员变动事件 {GroupAdmin_UserID}{(GroupAdmin_Flag == 1 ? "升为" : "消去")}群{GroupAdmin_GroupID}的管理员");
                        break;

                    case "ON_EVENT_GROUP_ADMINSYSNOTIFY":    //加群请求事件 _eventRequest_AddGroup id=12
                        request.type = "GroupRequest";
                        request.json = ((JSONMessage)fn).MessageText;
                        Dll.AddRequestToSave(request);

                        long GroupRequest_GroupId, GroupRequest_InviteUin, GroupRequest_Who;
                        string GroupRequest_WhoName, GroupRequest_GroupName, GroupRequest_InviteName;
                        JToken GroupRequest_extdata = events["CurrentPacket"]["Data"]["EventData"];
                        GroupRequest_GroupId        = Convert.ToInt64(GroupRequest_extdata["GroupId"].ToString());
                        GroupRequest_InviteUin      = Convert.ToInt64(GroupRequest_extdata["InviteUin"].ToString());
                        GroupRequest_Who            = Convert.ToInt64(GroupRequest_extdata["Who"].ToString());
                        GroupRequest_WhoName        = GroupRequest_extdata["WhoName"].ToString();
                        GroupRequest_GroupName      = GroupRequest_extdata["GroupName"].ToString();
                        GroupRequest_InviteName     = GroupRequest_extdata["InviteName"].ToString();
                        pluginManagment.CallFunction("GroupAddRequest", 1, GetTimeStamp(), GroupRequest_GroupId, GroupRequest_Who, Marshal.StringToHGlobalAnsi(""), "");
                        LogHelper.WriteLine($"加群请求事件 {GroupRequest_WhoName}({GroupRequest_Who})" +
                                            $" {(GroupRequest_InviteUin != 0 ? $"受{GroupRequest_InviteName}({GroupRequest_InviteUin})邀请" : "")}" +
                                            $"加入群{GroupRequest_GroupName}({GroupRequest_GroupId})");
                        break;

                    case "ON_EVENT_FRIEND_ADD":    //好友请求事件 _eventRequest_AddFriend id=11
                        request.type = "FriendRequest";
                        request.json = ((JSONMessage)fn).MessageText;
                        Dll.AddRequestToSave(request);

                        string FriendRequest_Content;
                        long FriendRequest_UserID;
                        JToken FriendRequest_data = events["CurrentPacket"]["Data"]["EventData"];
                        FriendRequest_Content     = FriendRequest_data["Content"].ToString();
                        FriendRequest_UserID      = Convert.ToInt64(FriendRequest_data["UserID"].ToString());
                        pluginManagment.CallFunction("FriendRequest", 1, GetTimeStamp(), FriendRequest_UserID, Marshal.StringToHGlobalAnsi(FriendRequest_Content), "");
                        LogHelper.WriteLine($"好友请求事件 QQ号:{FriendRequest_UserID} 验证信息:{FriendRequest_Content}");
                        break;

                    case "ON_EVENT_NOTIFY_PUSHADDFRD":    //好友添加完成事件 _eventFriend_Add id=10
                        long FriendAdded_UserID;
                        JToken FriendAdded_data = events["CurrentPacket"]["Data"]["EventData"];
                        FriendAdded_UserID      = Convert.ToInt64(FriendAdded_data["UserID"].ToString());
                        pluginManagment.CallFunction("FriendAdded", 1, GetTimeStamp(), FriendAdded_UserID);
                        LogHelper.WriteLine($"好友添加完成事件 与{FriendAdded_UserID}成为了好友");
                        break;

                    case "ON_EVENT_GROUP_SHUT":    //群禁言事件 _eventSystem_GroupBan id=8
                        long GroupShut_groupid, GroupShut_qqid, GroupShut_shuttime;
                        JToken GroupShut_data = events["CurrentPacket"]["Data"]["EventData"];
                        GroupShut_groupid     = Convert.ToInt64(GroupShut_data["GroupID"].ToString());
                        GroupShut_qqid        = Convert.ToInt64(GroupShut_data["UserID"].ToString());
                        GroupShut_shuttime    = Convert.ToInt64(GroupShut_data["ShutTime"].ToString());
                        pluginManagment.CallFunction("GroupBan", (GroupShut_shuttime == 0 ? 1 : 2), GetTimeStamp(), GroupShut_groupid, 0, GroupShut_qqid);
                        LogHelper.WriteLine($"群 {GroupShut_groupid} UserID {GroupShut_qqid} 禁言时间 {GroupShut_shuttime}秒");
                        break;
                    }
                }); task.Start();
            });
            // make the socket.io connection
            while (true)
            {
                Thread.Sleep(100);
                Application.DoEvents();
            }
        }
        public HttpResponseMessage GetDelivery(HttpRequestMessage request)
        {
            string strIncomingMessage = string.Empty;
            string element            = string.Empty;

            StreamReader MyStreamReader = new StreamReader(request.Content.ReadAsStreamAsync().Result);

            strIncomingMessage = MyStreamReader.ReadToEnd();
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.XmlResolver   = null;
            settings.DtdProcessing = DtdProcessing.Parse;
            XmlReader objXMLReader = XmlReader.Create(new StringReader(strIncomingMessage), settings);

            while (objXMLReader.Read())
            {
                switch (objXMLReader.NodeType)
                {
                case XmlNodeType.Element:
                    element = objXMLReader.Name;
                    break;
                }
                if (!string.IsNullOrEmpty(element))
                {
                    break;
                }
            }

            switch (element.ToLower())
            {
            case "smsdeliver":
                #region ReceiveSms
                ReceiveMessage receiveMessage = new ReceiveMessage();
                while (objXMLReader.Read())
                {
                    switch (objXMLReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        element = objXMLReader.Name;
                        if (element == "destAddrNbr")
                        {
                            receiveMessage.Receiver = objXMLReader.Value;
                        }
                        if (element == "origAddr")
                        {
                            receiveMessage.Sender = objXMLReader.Value;
                        }
                        if (element == "message")
                        {
                            receiveMessage.SmsText = objXMLReader.Value;
                        }

                        break;

                    case XmlNodeType.Text:
                        if (element == "destAddrNbr")
                        {
                            receiveMessage.Receiver = objXMLReader.Value;
                            break;
                        }
                        if (element == "origAddr")
                        {
                            receiveMessage.Sender = objXMLReader.Value;
                            break;
                        }
                        if (element == "message")
                        {
                            receiveMessage.SmsText = objXMLReader.Value;
                            break;
                        }
                        break;

                    case XmlNodeType.CDATA:
                        if (element == "origAddr")
                        {
                            receiveMessage.Sender = objXMLReader.Value;
                        }
                        if (element == "message")
                        {
                            receiveMessage.SmsText = objXMLReader.Value;
                        }
                        break;
                    }
                }
                if (strIncomingMessage.IndexOf("binary=") != -1)
                {
                    int    index   = strIncomingMessage.IndexOf("binary=") + 8;
                    string strLang = strIncomingMessage.Substring(index, 1);
                    if (strLang == "t")
                    {
                        receiveMessage.SmsText = DecodeUCS2(receiveMessage.SmsText);
                        receiveMessage.SmsText = Helper.PersianNumberToEnglish(receiveMessage.SmsText);
                    }
                }
                receiveMessage.ReceiveDateTime = DateTime.Now;
                receiveMessage.SmsText         = Helper.PersianNumberToEnglish(receiveMessage.SmsText);

                ManageQueue.SendMessage(Queues.ReceiveMessagesQueue, receiveMessage, receiveMessage.Sender);
                break;

                #endregion
            case "smsstatusnotification":
                #region DeliveryStatus
                Common.DeliveryMessage deliveryMessage = new Common.DeliveryMessage();
                deliveryMessage.Agent = (int)SmsSenderAgentReference.RahyabRG;
                while (objXMLReader.Read())
                {
                    switch (objXMLReader.NodeType)
                    {
                    case XmlNodeType.Element:
                        element = objXMLReader.Name;
                        if (element == "batch")
                        {
                            deliveryMessage.BatchId = objXMLReader.GetAttribute("batchID").Split('+')[1];
                        }
                        if (element == "sms")
                        {
                            deliveryMessage.ReturnId = objXMLReader.GetAttribute("smsId");
                        }
                        if (element == "destAddr")
                        {
                            deliveryMessage.Mobile = objXMLReader.Value;
                        }
                        if (element == "status")
                        {
                            deliveryMessage.Status = GetDeliveryStatus(objXMLReader.Value);
                        }
                        if (element == "time")
                        {
                            deliveryMessage.Date = !string.IsNullOrEmpty(objXMLReader.Value) ? DateManager.GetChristianDateForDB(objXMLReader.Value) : DateTime.Now;
                        }
                        break;

                    case XmlNodeType.CDATA:
                        if (element == "destAddr")
                        {
                            deliveryMessage.Mobile = objXMLReader.Value;
                        }
                        break;

                    case XmlNodeType.Text:
                        if (element == "status")
                        {
                            deliveryMessage.Status = GetDeliveryStatus(objXMLReader.Value);
                        }
                        if (element == "time")
                        {
                            deliveryMessage.Date = !string.IsNullOrEmpty(objXMLReader.Value) ? DateTime.Parse(objXMLReader.Value.Replace('-', '/')) : DateTime.Now;
                        }
                        break;
                    }
                }

                ManageQueue.SendMessage(Queues.SaveDelivery, deliveryMessage, deliveryMessage.ReturnId);
                break;

                #endregion
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
Example #20
0
        private ReplyBaseMessage ExcuteMessageHandler(ReceiveMessage ReceiveMessage)
        {
            ReplyBaseMessage Reply = null;

            switch (ReceiveMessage.MsgType)
            {
            case "text":
                Reply = _MessageHandler.On_TextEvent(ReceiveMessage);
                break;

            case "image":
                Reply = _MessageHandler.On_ImageEvent(ReceiveMessage);
                break;

            case "voice":
                Reply = _MessageHandler.On_VoiceEvent(ReceiveMessage);
                break;

            case "video":
                Reply = _MessageHandler.On_VideoEvent(ReceiveMessage);
                break;

            case "shortvideo":
                Reply = _MessageHandler.On_ShortVideoEvent(ReceiveMessage);
                break;

            case "location":
                Reply = _MessageHandler.On_LocationEvent(ReceiveMessage);
                break;

            case "link":
                Reply = _MessageHandler.On_LinkEvent(ReceiveMessage);
                break;

            case "event":
                switch (ReceiveMessage.Event)
                {
                case "subscribe":
                    Reply = _MessageHandler.On_SubscribeEvent(ReceiveMessage);
                    break;

                case "unsubscribe":
                    Reply = _MessageHandler.On_UnSubscribeEvent(ReceiveMessage);
                    break;

                case "CLICK":
                    Reply = _MessageHandler.On_CLICKEvent(ReceiveMessage);
                    break;

                case "VIEW":
                    Reply = _MessageHandler.On_VIEWEvent(ReceiveMessage);
                    break;

                case "scancode_push":
                    Reply = _MessageHandler.On_Scancode_pushEvent(ReceiveMessage);
                    break;

                case "scancode_waitmsg":
                    Reply = _MessageHandler.On_Scancode_waitmsgEvent(ReceiveMessage);
                    break;

                case "pic_sysphoto":
                    Reply = _MessageHandler.On_Pic_sysphotoEvent(ReceiveMessage);
                    break;

                case "pic_photo_or_album":
                    Reply = _MessageHandler.On_Pic_photo_or_albumEvent(ReceiveMessage);
                    break;

                case "pic_weixin":
                    Reply = _MessageHandler.On_Pic_weixinEvent(ReceiveMessage);
                    break;

                case "location_select":
                    Reply = _MessageHandler.On_Location_selectEvent(ReceiveMessage);
                    break;

                default:
                    Reply = _MessageHandler.On_DefaultEvent(ReceiveMessage);
                    break;
                }
                break;

            default:
                Reply = _MessageHandler.On_DefaultEvent(ReceiveMessage);
                break;
            }

            if (Reply != null)
            {
                Reply.FromUserName = ReceiveMessage.ToUserName;
                Reply.ToUserName   = ReceiveMessage.FromUserName;
            }


            return(Reply);
        }
Example #21
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            BaseGlobalVariable.Current.BeginInvoke(new Action <ReceiveMessage>(SaveLocation), message);

            return(null);
        }
Example #22
0
        private void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            Model.User user;
            Telegram.Bot.Types.Message message = e.Message;
            if (message != null && message.Type == MessageType.Text)
            {
                IQueryable <Model.User> users = _db.Users.Where((u) => u.TelegramId == message.From.Id);
                if (users.Count() > 0)
                {
                    user           = users.FirstOrDefault();
                    user.UserName  = message.From.Username;
                    user.FirstName = message.From.FirstName;
                    user.LastName  = message.From.LastName;

                    //lock (_lockObj)
                    //{
                    //    _uiContext.Send(async (obj) =>
                    //    {
                    //        _db.Users.Update(user);
                    //        await _db.SaveChangesAsync();
                    //    }, null);
                    //}

                    _uiContext.Send((obj) =>
                    {
                        _db.Users.Update(user);
                        _db.SaveChanges();
                    }, null);
                }
                else
                {
                    user = new Model.User()
                    {
                        TelegramId = message.From.Id,
                        UserName   = message.From.Username,
                        FirstName  = message.From.FirstName,
                        LastName   = message.From.LastName,
                        Date       = DateTime.Now
                    };

                    //lock (_lockObj)
                    //{
                    //    _uiContext.Send(async (obj) =>
                    //    {
                    //        _db.Users.Add(user);
                    //        await _db.SaveChangesAsync();
                    //    }, null);
                    //}

                    _uiContext.Send((obj) =>
                    {
                        _db.Users.Add(user);
                        _db.SaveChanges();
                    }, null);
                }

                //if (user == null)
                //{
                //    user = new Model.User()
                //    {
                //        TelegramId = message.From.Id,
                //        UserName = message.From.Username,
                //        FirstName = message.From.FirstName,
                //        LastName = message.From.LastName,
                //        Date = DateTime.Now
                //    };
                //    await _db.Users.AddAsync(user);
                //}
                //else
                //{
                //    _db.Users.Update(user);
                //}

                Model.Message messageDb = new Model.Message()
                {
                    UserId    = user.Id,
                    MessageId = message.MessageId,
                    ChatId    = message.Chat.Id,
                    Text      = message.Text,
                    Date      = message.Date
                };

                //lock (_lockObj)
                //{
                //    _uiContext.Send(async (obj) =>
                //    {
                //        _db.Messages.Add(messageDb);
                //        await _db.SaveChangesAsync();
                //    }, null);
                //}

                _uiContext.Send((obj) =>
                {
                    _db.Messages.Add(messageDb);
                    _db.SaveChanges();
                }, null);

                ReceiveMessage?.Invoke(this, new object[]
                {
                    message.Chat.Id,
                    message.Text
                });
            }
        }
Example #23
0
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     return(RuleUtil.Execute(RuleUtil.ProcessCorpUser, true, message.FromUserName));
 }
 private void TeachCourseManageTabPage_Enter(object sender, EventArgs e)
 {
     dataTable本学期可教课程.Clear();
     dataTable本学期已教课程.Clear();
     dataTable以前教授课程.Clear();
     dataTableBackground.Clear();
     new Thread(new ThreadStart(InitializeSchoolTimeTable)).Start();
     //读取本学期已教课程信息
     try
     {
         //不好意思,我背叛了无产阶级.jpg,只有这个之前教的课完全不需要主键信息,因此只把这个表通过JSON传播
         //裸传JSON的问题在于当select语句结果为空集时,传回的DataTable没有列头
         //因此只对如下情况选择JSON:
         //(1)一定不会返回空集
         //(2)返回空集时视为报错(比如找不到目标,用例直接终止或重新开始)
         #region 之前教的课
         this.GetServerMessage("teach@previous," + this.textBoxLoginName.Text);//之前教的课
         if (ReceiveMessage.IsJson())
         {
             dataTable以前教授课程 = ReceiveMessage.ToDataTable();
             dataGridView以前教授课程.DataSource          = dataTable以前教授课程;
             dataGridView以前教授课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
             foreach (DataGridViewColumn col in dataGridView以前教授课程.Columns)
             {
                 col.ReadOnly = true;
                 col.SortMode = DataGridViewColumnSortMode.NotSortable;
             }
         }
         else//选课结束
         {
             throw new Exception("选课系统已关闭");
         }
         #endregion 之前教的课
         using (MySqlConnection conn = new MySqlConnection(mysqlConnectionString))
         {
             #region 已教课程
             conn.Open();//已教课程,直接选择section中id符合条件的即可
             MySqlDataAdapter sda = new MySqlDataAdapter(String.Format("SELECT * FROM section where id = {0} and year = {1} and semester = '{2}';",
                                                                       textBoxLoginName.Text, CurrentYear, CurrentSemester), conn);
             sda.Fill(dataTable本学期已教课程);
             dataGridView本学期已教课程.DataSource          = dataTable本学期已教课程;
             dataGridView本学期已教课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
             foreach (DataGridViewColumn col in dataGridView本学期已教课程.Columns)
             {
                 col.ReadOnly = true;
                 col.SortMode = DataGridViewColumnSortMode.NotSortable;
             }
             #endregion 已教课程
             #region 填充TimeTable
             foreach (DataRow sectionRow in dataTable本学期已教课程.Rows)
             {
                 DataRow[] rows = dataTableTimeSlot.Select(
                     String.Format("time_slot_id = '{0}'", sectionRow[6]));//取出已教课程的time_slot_id
                 foreach (DataRow TimeSlotRow in rows)
                 {
                     int day      = (int)Enum.Parse(typeof(星期枚举), (string)TimeSlotRow.ItemArray[1]); //得到课程表第二维坐标
                     int start_wk = Convert.ToInt32(TimeSlotRow.ItemArray[2]) - 1;                   //得到课程表第一维循环开始值
                     int end_wk   = Convert.ToInt32(TimeSlotRow.ItemArray[3]) - 1;                   //得到课程表第一维循环结束值
                     int start_tm = Convert.ToInt32(TimeSlotRow.ItemArray[4]) - 1;                   //得到课程表第三维循环开始值
                     int end_tm   = Convert.ToInt32(TimeSlotRow.ItemArray[5]) - 1;                   //得到课程表第三维循环结束值
                     for (int i = start_wk; i <= end_wk; i++)
                     {
                         for (int j = start_tm; j <= end_tm; j++)
                         {
                             TimeTable[i, day, j].SetCourseOccupied();
                             TimeTable[i, day, j].course_id = sectionRow[0].ToString();
                             TimeTable[i, day, j].sec_id    = sectionRow[1].ToString();
                             TimeTable[i, day, j].semester  = sectionRow[2].ToString();
                             TimeTable[i, day, j].year      = sectionRow[3].ToString();
                             TimeTable[i, day, j].id        = sectionRow[7].ToString();
                         }
                     }
                 }
             }
             #endregion 填充TimeTable
             #region 可教课程
             sda = new MySqlDataAdapter(String.Format("select * from section where (course_id in (select course_id from can_teach where id = {0}) and isnull(id)) and year = {1} and semester = '{2}';",
                                                      textBoxLoginName.Text, CurrentYear, CurrentSemester), conn);
             sda.Fill(dataTable本学期可教课程);
             dataGridView本学期可教课程.DataSource          = dataTable本学期可教课程;
             dataGridView本学期可教课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
             foreach (DataGridViewColumn col in dataGridView本学期可教课程.Columns)
             {
                 col.ReadOnly = true;
                 col.SortMode = DataGridViewColumnSortMode.NotSortable;
             }
             #endregion 可教课程
             #region 后台课程
             //为已教和可教课程的并集,用于提交数据库时使用
             sda = new MySqlDataAdapter(String.Format("select * from section where (course_id in " +
                                                      "(select course_id from can_teach where id = {0}) " +
                                                      "and isnull(id)) and year = {1} and semester = '{2}' " +
                                                      "union SELECT * FROM section where id = {0}" +
                                                      " and year = {1} and semester = '{2}';",
                                                      textBoxLoginName.Text, CurrentYear, CurrentSemester), conn);
             sda.Fill(dataTableBackground);
             dataTableBackground.PrimaryKey = new DataColumn[]
             {
                 dataTableBackground.Columns["course_id"],
                 dataTableBackground.Columns["sec_id"],
                 dataTableBackground.Columns["semester"],
                 dataTableBackground.Columns["year"]
             };
             #endregion 后台课程
             if (dataTableBackground.Rows.Count == 0)
             {
                 throw new Exception("没有可选课程");
             }
             sda.Dispose();
             conn.Close();
         }
     }
     catch (MySqlException ex)
     {
         MessageBox.Show("无法进入课程目录系统", "严重错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString(), "严重错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Example #25
0
 public virtual ReplyBaseMessage On_UnSubscribeEvent(ReceiveMessage ReceiveMessage)
 {
     return(null);
 }
		public static void AddRecevieGridControlItem(ReceiveMessage receviceMessage)
		{
			RecMsgDateSource.Add(receviceMessage);
		}
Example #27
0
        public DataTerminalSession(TcpClient MyTCPClient, NetworkStream MyTCPStream, CloseConnectionDelegate MyCloseConnectionMethod, UpdateCompleteDelegate InformAboutUpdateComplete, ReceiveMessage receiveMessage, Guid sessionId)
        {
            TCPClient           = MyTCPClient;
            TCPStream           = MyTCPStream;
            DeleteConnection    = MyCloseConnectionMethod;
            this.receiveMessage = receiveMessage;

            this.SessionId = sessionId;

            //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""newwms"";");
            //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""iboya81""; Usr=""Оборский Д.В.""; Pwd=""123456""");
            //Server1CAgent = new HandlingVia1CServer(@"File=""C:\Documents and Settings\Reshifa\My Documents\InfoBase9""; Usr=""Denis.V.O""; Pwd=""123""");
            this.InformAboutUpdateComplete = InformAboutUpdateComplete;
        }
Example #28
0
 public async Task SendMessageReadAsync(ReceiveMessage receiveMessage)
 {
     var sendMessage = new SendMessage(receiveMessage.MessageId, receiveMessage.SenderId, UserId, receiveMessage.ReceiverType, MessageType.readStatusChange, "");
     await WebSocketClient.SendMassage(Newtonsoft.Json.JsonConvert.SerializeObject(sendMessage));
 }
Example #29
0
 public void OnAfterMessage(ReceiveMessage msg, ResponseMessage repMsg)
 {
     LogHelper.Log(msg.ToString(), repMsg.ToString());
 }
Example #30
0
        private Task Publish(ReceiveMessage message)
        {
            m_publisher.Send(Translate(message));

            return(Task.FromResult(message));
        }
Example #31
0
 /// <summary>
 /// Event procedure: Called when a message from server is received.
 /// </summary>
 /// <param name="sender">Sender of the event</param>
 /// <param name="e">Event arguments containing the message content</param>
 private void OnMessage(object sender, MessageEventArgs e)
 {
     ReceiveMessage?.Invoke(e.RawData);
 }
Example #32
0
 public Protocol(ReceiveMessage rmsg)
 {
     _rmsg = rmsg;
 }
Example #33
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            string content = Expression.Execute(Content, message);

            return(new TextSendMessage(message, content));
        }
Example #34
0
 public override bool Match(ReceiveMessage message)
 {
     return(true);
 }
 internal ServiceSendMessage(ReceiveMessage message)
     : this(message.FromUserName)
 {
 }