Ejemplo n.º 1
0
 private void User_OnMessageRequestReceivedCallback(ChatLib.Message message)
 {
     if (message.RequestType == RequestType.Rooms)
     {
         Rooms = new ObservableDictionary <string, Room>(JsonSerialization.DeserializeRooms(message.Content));
     }
 }
Ejemplo n.º 2
0
 private void User_OnMessageStatusReceivedCallback(ChatLib.Message message)
 {
     if (message.StatusType == StatusType.Connected)
     {
         print(message.Name + " Connected", Log);
     }
     else if (message.StatusType == StatusType.Disconnected)
     {
         print(message.Name + " Disconnected", Log);
     }
     else if (message.StatusType == StatusType.Disconnecting)
     {
         if (message.Content != null || message.Content != "")
         {
             print(message.Content, Log, Color.Red);
         }
         print(message.Name + " Disconnected", Log);
         user.Close();
         tcpClient.Close();
         user = null;
         tcpClient.Dispose();
         ChangeConnectionInputState(true);
     }
     else if (message.StatusType == StatusType.ErrorDisconnect)
     {
         print(message.Content, Log);
         user.Close();
         tcpClient.Close();
         user = null;
         tcpClient.Dispose();
         ChangeConnectionInputState(true);
     }
 }
Ejemplo n.º 3
0
        private void SendButton_Click(object sender, EventArgs e)
        {
            string text = this.UserInput.Text;

            if (string.IsNullOrEmpty(text))
            {
                this.UserInput.BackColor = Color.DarkRed;
                SystemSounds.Exclamation.Play();
                return;
            }

            var msg    = new Message(text, this._currentChat);
            var packet = Data.SendMessage(msg);

            this._comptroller.PaketQueue.Enqueue(packet);

            this.MessageView.Items.Add(new ListViewItem(new[] { this.UserLabel.Text, text, this._currentChat.ToString() }));
            ScrollLastMessage();
            this.UserInput.Text = "";
        }
Ejemplo n.º 4
0
 private void User_OnMessageInitReceivedCallback(ChatLib.Message message)
 {
     if (message.Content == "admin")
     {
         string password = "";
         using (TextInput input = new TextInput())
         {
             if (input.ShowDialog() == DialogResult.OK)
             {
                 password = input.Password;
             }
             else
             {
                 user.CreateStatus(StatusType.Disconnecting);
                 ChangeConnectionInputState(true);
                 return;
             }
         }
         user.Init(password);
     }
 }
Ejemplo n.º 5
0
 private void User_OnMessageReceivedCallback(ChatLib.Message message)
 {
     print(message.Name + ": " + message.Content, Chat, NColorToColor(message.Color));
     notifications.ShowNotification(message.Name, message.Content);
 }
Ejemplo n.º 6
0
 private void User_OnMessageTransferReceivedCallback(ChatLib.Message message)
 {
     File.WriteAllBytes(message.Filename, message.FileContents);
     print(message.Name + ": file://" + new FileInfo(message.Filename).FullName.Replace(@"\", "/"), Chat, NColorToColor(message.Color));
 }
Ejemplo n.º 7
0
 private void User_OnMessageWhisperReceivedCallback(ChatLib.Message message)
 {
     print("Private Message From " + message.Name + ": " + message.Content, Chat, NColorToColor(message.Color));
 }
Ejemplo n.º 8
0
 private void User_OnMesssageInformationReceivedCallback(ChatLib.Message message)
 {
     print(message.Name + ": " + message.Content, Chat);
 }
Ejemplo n.º 9
0
        private void Connect()
        {
            if (IPBox.Text == "IP Address" || IPBox.Text.Length < 1)
            {
                if (debug)
                {
                    IPBox.Text = GetLocalIPAddress();
                }
                else
                {
                    IPBox.Text = "novastudios.tk";
                }
            }

            Thread t = new Thread(delegate()
            {
                try
                {
                    if (tcpClient != null)
                    {
                        if (tcpClient.Connected)
                        {
                            user.CreateStatus(StatusType.Disconnecting);
                            ChangeConnectionInputState(true);
                            //FixClient();
                            return;
                        }
                    }

                    print("Connecting... ", Log);
                    tcpClient = new TcpClient(IPBox.Text, 8910);

                    ChatLib.Message secure = MessageHelpers.GetMessage(tcpClient.GetStream());
                    string password        = "";
                    if (secure.Name == "locked")
                    {
                        using (TextInput input = new TextInput())
                        {
                            if (input.ShowDialog() == DialogResult.OK)
                            {
                                password = input.Password;
                            }
                            else
                            {
                                user.CreateStatus(StatusType.Disconnecting);
                                ChangeConnectionInputState(true);
                                return;
                            }
                        }
                    }

                    if (secure.Content != "")
                    {
                        SslStream ssl = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
                        ssl.AuthenticateAsClient(secure.Content);

                        user = new User(nameBox.Text, ssl);
                        user.Init(password);
                    }
                    else
                    {
                        user = new User(nameBox.Text, tcpClient.GetStream());
                        user.Init(password);
                    }

                    // Setup Callbacks
                    user.OnMessageReceivedCallback         += User_OnMessageReceivedCallback;
                    user.OnMessageStatusReceivedCallback   += User_OnMessageStatusReceivedCallback;
                    user.OnMessageTransferReceivedCallback += User_OnMessageTransferReceivedCallback;
                    user.OnMessageWhisperReceivedCallback  += User_OnMessageWhisperReceivedCallback;
                    user.OnMessageInitReceivedCallback     += User_OnMessageInitReceivedCallback;
                    //user.OnMessageAnyReceivedCallback += User_OnMessageAnyReceivedCallback;
                    user.OnMessageRequestReceivedCallback      += User_OnMessageRequestReceivedCallback;
                    user.OnMesssageInformationReceivedCallback += User_OnMesssageInformationReceivedCallback;
                    user.OnErrorCallback += (e) => { print(e.Message + " " + e.TargetSite + " " + GetLineNumber(e), Log); };

                    ChangeConnectionInputState(false);
                    print("Successfully connected to " + IPBox.Text, Log, Color.LimeGreen);
                }
                catch (Exception ex)
                {
                    print("Connection failed -> " + ex.Message, Log, Color.Red);
                }
            });

            t.IsBackground = true;
            t.Start();
        }
Ejemplo n.º 10
0
        private static void HandleClient(TcpClient cl)
        {
            cl.Client.Send(toJson(welcomePaket));

            while (cl.Connected)
            {
                SleepForClData(ref cl);

                var recBytes = RecBytes(ref cl);

                foreach (var data in ProcessReceived(Encoding.UTF8.GetString(recBytes)))
                {
                    Data reData = default;
                    var  r      = new Random();
                    int  max    = r.Next(0, 1000);
                    Console.WriteLine(data);

                    switch (data.Action)
                    {
                    case Data.ActionEnum.CONNECTED: break;

                    case Data.ActionEnum.REGISTER:
                        reData = new Data(Data.ActionEnum.SUCCEED_REGISTER);
                        break;

                    case Data.ActionEnum.LOGIN:
                        reData = new Data(Data.ActionEnum.SUCCEED_LOGIN, "0");
                        break;

                    case Data.ActionEnum.SEND_MESSAGE:
                        reData = new Data(Data.ActionEnum.SUCCEED_MESSAGE_SEND);
                        break;

                    case Data.ActionEnum.GET_LAST_MESSAGES:

                        if (data.Chats != null && data.Chats.Length > 0)
                        {
                            int chatID = data.Chats[0].ChatId;
                            var msList = new List <Message>();

                            for (int i = 0; i < max; i++)
                            {
                                var mn = new Message("Message number " + i, r.NextDouble() > .5 ? chatID : 5);
                                msList.Add(mn);
                            }

                            //reData = new Data( Data.ActionEnum.SUCCEED_GET_LAST_MESSAGES,  msList.ToArray() );     TODO:
                        }
                        else
                        {
                            reData = new Data(Data.ActionEnum.ERROR_GET_LAST_MESSAGES, "");
                        }

                        break;

                    case Data.ActionEnum.GET_LAST_CHATS:

                        var chList = new List <ChatInfo>();

                        for (int i = 0; i < max; i++)
                        {
                            var ch = new ChatInfo(i, r.Next(), 0, "Chat " + "number " + i);
                            chList.Add(ch);
                        }

                        //reData = new Data( Data.ActionEnum.SUCCEED_GET_LAST_CHATS, chList.ToArray()  );       TODO
                        break;

                    case Data.ActionEnum.GET_CHAT_INFO:
                        reData = new Data(Data.ActionEnum.SUCCEED_GET_CHAT_INFO);
                        break;

                    case Data.ActionEnum.CREATE_CHAT:
                        reData = new Data(Data.ActionEnum.SUCCEED_CREATE_CHAT);
                        break;

                    case Data.ActionEnum.ADD_TO_CHAT:
                        reData = new Data(Data.ActionEnum.SUCCEED_ADD_TO_CHAT);
                        break;

                    case Data.ActionEnum.SUCCEED:
                    case Data.ActionEnum.SUCCEED_LOGIN:
                    case Data.ActionEnum.SUCCEED_REGISTER:
                    case Data.ActionEnum.SUCCEED_MESSAGE_SEND:
                    case Data.ActionEnum.SUCCEED_GET_LAST_MESSAGES:
                    case Data.ActionEnum.SUCCEED_GET_LAST_CHATS:
                    case Data.ActionEnum.SUCCEED_GET_CHAT_INFO:
                    case Data.ActionEnum.SUCCEED_CREATE_CHAT:
                    case Data.ActionEnum.SUCCEED_ADD_TO_CHAT: break;

                    default: throw new ArgumentOutOfRangeException();
                    }

                    PacketQueue.Enqueue(reData);
                }

                while (PacketQueue.Count > 0)
                {
                    cl.Client.Send(toJson(PacketQueue.Dequeue()));
                }
            }
        }