public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
            request.Headers.Add(MessageHeader.CreateHeader("SecurityToken", "", "KEY"));
            request = TraceMessage(request.CreateBufferedCopy(int.MaxValue));
            return null;

        }
예제 #2
0
파일: Form1.cs 프로젝트: tsviet/Chat
        //Create room button click
        private void createRoom_Click(object sender, EventArgs e)
        {
            //Send create message to a server
            //chatMainWindow.Items.Add("User name : " + userName);
            if (string.IsNullOrWhiteSpace(createRoom_textBox.Text))
            {
                return;
            }

            Client.Message responce = IPC(Command.Create, createRoom_textBox.Text);

            if (responce == null || responce.command == Command.NotConnected)
            {
                msg("Connect to server first!"); return;
            }
            if (responce != null && responce.command == Command.Error)
            {
                label6.Visible = true;
                label6.Text    = "Room already exist!";

                Thread tread = new Thread(turnOfErrorSent);
                tread.Start();
            }
            else if (responce != null && responce.command.HasFlag(Command.OK))
            {
                //Update current roomName with new chatroom
                roomName = createRoom_textBox.Text;
                //Post message to a log window
                msg("Chat room : " + roomName + " were created!");
            }
        }
예제 #3
0
        private Client.Message DeserializeMessage(byte[] buff)
        {
            BinaryFormatter bf = new BinaryFormatter();

            Client.Message obj = (Client.Message)bf.Deserialize(new MemoryStream(buff));
            return(obj);
        }
예제 #4
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void selectedIndexChanged(object sender, EventArgs e)
 {
     if (chatMainWindow.SelectedItem != null && chatMainWindow.SelectedItem.ToString().Contains("Click on it to download!"))
     {
         saveFileDialog1.ShowDialog();
         Client.Message responce = IPC(Command.SendFile, Regex.Match(chatMainWindow.SelectedItem.ToString(),
                                                                     @"(?is)File (.+?) added!").Groups[1].Value);
         File.WriteAllText(saveFileDialog1.FileName, responce.message[0]);
     }
 }
예제 #5
0
 public void SentMessage(string message)
 {
     var m = new Message
     {
         _id = Guid.NewGuid().ToString(),
         Content = message,
         UserModel = new UserModel { AvatarPath = "avatar1.png", BgColor = "6EB940", UserName = "******" }
     };
     var serialize = JsonConvert.SerializeObject(m);
     HubProxy.Invoke("Send", serialize);
 }
예제 #6
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void serverDisconnect_Click(object sender, EventArgs e)
 {
     Client.Message responce = IPC(Command.DisconnectClient, userName);
     if (responce != null && responce.command.HasFlag(Command.OK))
     {
         msg("You were disconected from server !");
     }
     else
     {
         msg("Connect to a server first!");
     }
 }
예제 #7
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void comboBox1_Click(object sender, EventArgs e)
 {
     Client.Message responce = IPC(Command.UpdateDropDown, userName);
     if (responce != null && responce.command.HasFlag(Command.OK))
     {
         comboBox1.Items.Clear();
         foreach (var m in responce.message)
         {
             comboBox1.Items.Add(m);
         }
     }
 }
예제 #8
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void refreshMainChat_Click(object sender, EventArgs e)
 {
     Client.Message responce = IPC(Command.RefreshCurrentRoom, userName);
     if (responce != null && responce.command.HasFlag(Command.OK))
     {
         chatMainWindow.Items.Clear();
         foreach (var m in responce.message)
         {
             chatMainWindow.Items.Add(m);
         }
     }
 }
예제 #9
0
파일: Form1.cs 프로젝트: tsviet/Chat
        private Client.Message IPC(Command command, string message)
        {
            //Create message object and setup values
            Client.Message request = new Client.Message();
            request.command = command;
            request.message = new List <string>()
            {
                message
            };

            //Send message and seve on a server and recieve message from a server
            return(messages.RPC(request));
        }
예제 #10
0
파일: Form1.cs 프로젝트: tsviet/Chat
        private void serverConnect_Click(object sender, EventArgs e)
        {
            string resp = messages.Connect(serverNamePort.Text.Split(':'));

            Client.Message responce = new Client.Message();
            msg(resp);
            if (resp != null && resp.Contains("connected"))
            {
                do
                {
                    SetUser();
                    responce = IPC(Command.SetUser, userName);
                } while (!responce.command.HasFlag(Command.OK));
            }
        }
예제 #11
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void refreshRooms_Click(object sender, EventArgs e)
 {
     Client.Message responce = IPC(Command.RefreshRooms, userName);
     if (responce != null && responce.command.HasFlag(Command.OK))
     {
         listOfRooms.Items.Clear();
         foreach (var m in responce.message)
         {
             listOfRooms.Items.Add(m);
         }
     }
     else
     {
         msg("No rooms found!");
     }
 }
예제 #12
0
파일: Form1.cs 프로젝트: tsviet/Chat
        private void refreshUserList_Click(object sender, EventArgs e)
        {
            Client.Message responce = IPC(Command.ListUsers, userName);

            if (responce != null && responce.command.HasFlag(Command.OK))
            {
                List <string> mess = responce.message;
                userList.Items.Clear();
                foreach (var m in mess)
                {
                    userList.Items.Add(m);
                }
            }
            else
            {
                msg("Can't list users!");
            }
        }
예제 #13
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void attach_Click(object sender, EventArgs e)
 {
     openFileDialog1.ShowDialog();
     try
     {
         Client.Message responce = IPC(Command.SendFile, File.ReadAllText(openFileDialog1.FileName), openFileDialog1.FileName);
         if (responce != null && responce.command.HasFlag(Command.OK))
         {
             msg("File " + openFileDialog1.FileName + " added! Click on it to download!");
         }
         else
         {
             File.WriteAllText("F:/log.txt", openFileDialog1.FileName);
             msg("Fail to send a file!");
         }
     }
     catch (IOException) { File.WriteAllText("F:/log.txt", File.ReadAllText(openFileDialog1.FileName)); }
 }
        public DeserializableCommand(Message message, ISerialize serializer)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }

            if (serializer == null)
            {
                throw new ArgumentNullException("serializer");
            }

            Debug.Assert(
                !string.IsNullOrEmpty(message.LockToken),
                "message.LockToken is a null reference or empty string.");
            _lockToken = message.LockToken;

            byte[] messageBytes = message.GetBytes(); // this needs to be saved if needed later, because it can only be read once from the original Message

            _command = serializer.DeserializeObject<dynamic>(messageBytes);
        }
예제 #15
0
        private void PhucvuClient(object obj)
        {
            ListViewItem itemclient = (ListViewItem)obj;
            Socket       client     = (Socket)itemclient.Tag;

            while (true)
            {
                byte[] buff = new byte[100000];
                if (client.Connected)
                {
                    try
                    {
                        client.Receive(buff);
                        Client.Message message = new Client.Message();
                        message = DeserializeMessage(buff);
                        client.Send(Encoding.UTF8.GetBytes(message.MessageText));
                        try
                        {
                            foreach (ListViewItem item in lvwClient.Items)
                            {
                                if (item.SubItems[1].Text == message.MessageItem.SubItems[1].Text)
                                {
                                    ((Socket)item.Tag).Send(Encoding.UTF8.GetBytes(message.MessageText));
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                    catch (Exception)
                    {
                        client.Close();
                        lvwClient.Items.Remove(itemclient);
                        UpdateListClient();
                        break;
                    }
                }
            }
        }
예제 #16
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void leaveRoom_Click(object sender, EventArgs e)
 {
     try
     {
         foreach (var item in listOfRooms.SelectedItems)
         {
             Client.Message responce = IPC(Command.LeaveRoom, userName, item.ToString());
             if (responce != null && responce.command.HasFlag(Command.OK))
             {
                 msg("User " + userName + " leaved room " + item.ToString());
             }
             else
             {
                 msg("Error: unnable to leave selected room!");
             }
         }
     }
     catch (Exception)
     {
         msg("Choose room first!");
     }
 }
예제 #17
0
파일: Form1.cs 프로젝트: tsviet/Chat
 private void joinButton_Click(object sender, EventArgs e)
 {
     try
     {
         foreach (var item in listOfRooms.SelectedItems)
         {
             Client.Message responce = IPC(Command.JoinRoom, userName, item.ToString());
             if (responce != null && responce.command.HasFlag(Command.Error))
             {
                 msg("You are already in the room " + item.ToString());
             }
             else
             {
                 msg("User " + userName + " joined room " + item.ToString());
             }
         }
     }
     catch (Exception)
     {
         msg("Error: Choose room first!");
     }
 }
예제 #18
0
파일: Form1.cs 프로젝트: tsviet/Chat
        private void sendButton_Click(object sender, EventArgs e)
        {
            if (comboBox1.Items.Count > 0 && comboBox1.SelectedIndex >= 0)
            {
                Client.Message responce = IPC(Command.SendMessage, userName + " says: " + sendMessage_textBox.Text, comboBox1.SelectedItem.ToString());

                sendMessage_textBox.Text = "";
                sendMessage_textBox.Focus();

                if (responce != null && responce.command.HasFlag(Command.OK))
                {
                    //Message Sent
                    label7.Visible = true;
                    label7.Text    = "Message sent!";

                    Thread tread = new Thread(turnOfMessageSent);
                    tread.Start();
                }
            }
            else
            {
                msg("Choose room before sending messages!");
            }
        }
        /// <summary>
        /// Sends an event to IoT Hub using the provided eventId GUID
        /// </summary>
        /// <param name="eventId"></param>
        /// <param name="eventData"></param>
        /// <returns></returns>
        public async Task SendEventAsync(Guid eventId, dynamic eventData)
        {
            string objectType = EventSchemaHelper.GetObjectType(eventData);
            var objectTypePrefix = _configurationProvider.GetConfigurationSettingValue("ObjectTypePrefix");

            if (!string.IsNullOrWhiteSpace(objectType) && !string.IsNullOrEmpty(objectTypePrefix))
            {
                eventData.ObjectType = objectTypePrefix + objectType;
            }

            // sample code to trace the raw JSON that is being sent
            //string rawJson = JsonConvert.SerializeObject(eventData);
            //Trace.TraceInformation(rawJson);

            byte[] bytes = _serializer.SerializeObject(eventData);

            var message = new Message(bytes);
            message.Properties["EventId"] = eventId.ToString();

            await AzureRetryHelper.OperationWithBasicRetryAsync(async () =>
            {
                try
                {
                    await _deviceClient.SendEventAsync(message);
                }
                catch (Exception ex)
                {
                    _logger.LogError(
                        "{0}{0}*** Exception: SendEventAsync ***{0}{0}EventId: {1}{0}Event Data: {2}{0}Exception: {3}{0}{0}",
                        Console.Out.NewLine,
                        eventId,
                        eventData,
                        ex);
                }
            });
        }
        public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
            var wsseHeader = CreateWSSecurityHeader(token);

            request.Headers.Add(new SecurityHeader(token));

            return null;
        }
예제 #21
0
파일: Core.cs 프로젝트: Zogzer/Applebot
        private void MessageRecievedEventHandler(object sender, Message message)
        {
            lock (_pluginLock)
            {
                IEnumerable<Command> commands = GetCommandsForPlatform(sender as Platform);
                Dictionary<Type, DateTime> platformOverflows = _platforms.Find(x => x.Item1 == sender as Platform).Item2;
                foreach (Command command in commands)
                {
                    if (!(sender as Platform).CheckElevatedStatus(message))
                        if (platformOverflows.ContainsKey(command.GetType()) && !(platformOverflows[command.GetType()] < DateTime.UtcNow - command.Overflow))
                            continue;

                    if (!CheckExpressions(message, command))
                        continue;

                    Logger.Log(Logger.Level.APPLICATION, "Platform \"{0}\" activated command \"{1}\"", sender.GetType(), command.Name);
                    MethodInfo method = CalculateLeastDerivedMessageHandle(message.GetType(), sender.GetType(), command.GetType());
                    Task.Run(new Action(() => { method.Invoke(command, new object[] { message, sender }); }));
                    platformOverflows[command.GetType()] = DateTime.UtcNow;
                }
            }
        }
예제 #22
0
파일: Core.cs 프로젝트: Zogzer/Applebot
 private bool CheckExpressions(Message message, Command command)
 {
     foreach (var regex in command.Expressions)
     {
         if (regex.Match(message.Content).Success)
             return true;
     }
     return false;
 }
 public override bool TryReceive(TimeSpan timeout, out Message message)
 {
     message = Receive(timeout);
     return message != null;
 }
예제 #24
0
 /// <summary>
 /// Send a message to server
 /// </summary>
 /// <param name="Message"></param>
 /// <param name="Pr"></param>
 public void DeliverMessage(string Message, Configuration.Priority Pr = Configuration.Priority.Normal)
 {
     Message text = new Message();
     text._Priority = Pr;
     text.message = Message;
     lock (messages)
     {
         messages.Add(text);
         return;
     }
 }
        public override void Send(Message message, TimeSpan timeout)
        {
            if (State == CommunicationState.Opened && !message.IsFault)
            {
            #if VERBOSE
                DebugHelper.Start();
            #endif
                byte[] body;

                IBasicProperties basicProperties = m_model.CreateBasicProperties();

                // Set message properties
                basicProperties.Timestamp = new AmqpTimestamp(DateTime.Now);
                basicProperties.ContentType = "SOAP";
                basicProperties.DeliveryMode = m_bindingElement.PersistentDelivery ? (byte)2 : (byte)1;
                if (!string.IsNullOrEmpty(m_bindingElement.TTL))
                {
                    basicProperties.Expiration = m_bindingElement.TTL;
                }

                // TODO: read custom headers and put it into the message properties
                //foreach (MessageHeaderInfo messageHeaderInfo in message.Headers)
                //{
                //    basicProperties.Headers.Add(messageHeaderInfo.Name, "");
                //}

                if (m_bindingElement.ReplyToExchange != null)
                {
                    message.Headers.ReplyTo = new EndpointAddress(m_bindingElement.ReplyToExchange);
                }

                using (MemoryStream str = new MemoryStream())
                {
                    m_encoder.WriteMessage(message, str);
                    body = str.ToArray();
                }

                RabbitMQUri uri = new RabbitMQUri(RemoteAddress.Uri);

                m_model.BasicPublish(uri.Endpoint,
                                     uri.RoutingKey,
                                     basicProperties,
                                     body);

            #if VERBOSE
                DebugHelper.Stop(" #### Message.Send {{\n\tAction={2}, \n\tBytes={1}, \n\tTime={0}ms}}.",
                    body.Length,
                    message.Headers.Action.Remove(0, message.Headers.Action.LastIndexOf('/')));
            #endif
            }
        }
예제 #26
0
 public void WriteMessage(Message message)
 {
     networkClient.WriteMessage(message);
 }
예제 #27
0
 private void OnMessageReceived(Message message)
 {
     var handler = MessageReceived;
     if (handler != null)
     {
         handler(message);
     }
 }
 public void AfterReceiveReply(ref Message reply, object correlationState)
 {
 }
 public void AfterReceiveReply(ref Message reply, object correlationState)
 {
     try
     {
         reply.Headers.RemoveAll("Security", WSSecurity10Constants.Namespace); // remove the Security header so Exception is not thrown
     }
     catch { };
 }