Exemple #1
0
        public static void HandleCallRequest(SocketConnection conn, Packet pak)
        {
            if (conn.ConnectionData.ContainsKey("Member"))
            {
                Member memfrom = (Member)conn.ConnectionData["Member"];
                int MemberCall = pak.Readint();
                int Port = pak.Readint();
                string LocalAddress = pak.Readstring();

                if (memfrom.Friends.Contains(Convert.ToString(MemberCall)))
                {
                    if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberCall))
                    {
                        SocketConnection toconn = ServerSocket.Instance.MemberConnections[MemberCall];
                        if(conn.clientSocket.RemoteEndPoint.ToString().Split(':')[0] == toconn.clientSocket.RemoteEndPoint.ToString().Split(':')[0])
                            toconn.SendPacket(Packet.New(Packets.PAK_SRV_CALL_DLVR, memfrom.ID, LocalAddress, Port));
                        else
                            toconn.SendPacket(Packet.New(Packets.PAK_SRV_CALL_DLVR, memfrom.ID, conn.clientSocket.RemoteEndPoint.ToString().Split(':')[0], Port));
                    }
                    else
                    {
                        //TODO: Notify the member that the friend is offline
                    }
                }
                else
                {
                    //TODO: Notify the member that the friend is not in their list
                }
            }
        }
Exemple #2
0
        public static void HandleCallDeny(SocketConnection conn, Packet pak)
        {
            if (conn.ConnectionData.ContainsKey("Member"))
            {
                Member memfrom = (Member)conn.ConnectionData["Member"];
                int MemberCall = pak.Readint();

                if (memfrom.Friends.Contains(Convert.ToString(MemberCall)))
                {
                    if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberCall))
                    {
                        ServerSocket.Instance.MemberConnections[MemberCall].SendPacket(Packet.New(Packets.PAK_SRV_CALL_DNY_DLVR, memfrom.ID));
                    }
                    else
                    {
                        //TODO: Notify the member that the friend is offline
                    }
                }
                else
                {
                    //TODO: Notify the member that the friend is not in their list
                }
            }
        }
Exemple #3
0
        void HandleUpdateChangeDeliver(ClientSocket clientSocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int MemberID = pak.Readint();
                string NewStatusUpdate = pak.Readstring();

                Contacts[MemberID].control.txt_Status.Text = NewStatusUpdate;
                Contacts[MemberID].StatusUpdate = NewStatusUpdate;
            }, null);
        }
Exemple #4
0
        void HandleStatusChangeDeliver(ClientSocket clientSocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int MemberID = pak.Readint();
                Status NewStatus = (Status)pak.Readbyte();
                Contact contact = Contacts[MemberID];

                if (contact.status == Status.Offline && NewStatus != Status.Offline && ConfigManager.Instance.GetBool("txt_loginnotification", true) && ConfigManager.Instance.GetBool("txt_notifications", true))
                    NotificationWindow.ShowNotification(String.Format("{0} Has Signed In", contact.FullName), String.Format("{0} has just signed in.", contact.FullName), contact);
                if (contact.status != Status.Offline && NewStatus == Status.Offline && ConfigManager.Instance.GetBool("txt_logoutnotification", true) && ConfigManager.Instance.GetBool("txt_notifications", true))
                {
                    VCallCore.EndCall(contact.ID);
                    NotificationWindow.ShowNotification(String.Format("{0} Has Signed Out", contact.FullName), String.Format("{0} has just signed out.", contact.FullName), contact);
                }

                contact.status = NewStatus;
                BlazeGames.IM.Client.MainWindow.Instance.page_Contacts.Draw();
            }, null);
        }
Exemple #5
0
        void HandleMessageDeliver(ClientSocket clientSocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int FromMemberID = pak.Readint();
                string Message = pak.Readstring();

                if(BlazeGames.IM.Client.MainWindow.Instance.page_Chat.ChattingWith != null)
                    if (BlazeGames.IM.Client.MainWindow.Instance.page_Chat.ChattingWith.ID == FromMemberID)
                        BlazeGames.IM.Client.MainWindow.Instance.page_Chat.HandleMessage(Contacts[FromMemberID].FullName, Message);

                Contacts[FromMemberID].ReceiveNewMessage(Message);
            }, null);
        }
Exemple #6
0
        void HandleMemberInfoResponse(ClientSocket clientSocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                    ReceivedFriendCount++;

                    if (pak.Readbool())
                    {
                        int MemberID = pak.Readint();
                        string MemberNickname = pak.Readstring();
                        string MemberStatus = pak.Readstring();
                        int MemberAuth = pak.Readint();
                        byte StatusCode = pak.Readbyte();
                        bool PendingRequest = pak.Readbool();
                        string FirstName = pak.Readstring();
                        string LastName = pak.Readstring();

                        if (!Contacts.ContainsKey(MemberID))
                            Contacts.Add(MemberID, new Contact(MemberID, MemberNickname, FirstName, LastName, PendingRequest, (Status)StatusCode, MemberStatus, MemberAuth));
                        else
                        {
                            Contact contact = Contacts[MemberID];

                            contact.NickName = MemberNickname;
                            contact.StatusUpdate = MemberStatus;
                            contact.Authority = MemberAuth;
                            contact.status = (Status)StatusCode;
                            contact.Pending = PendingRequest;
                            contact.FirstName = FirstName;
                            contact.LastName = LastName;
                            contact.FullName = FirstName + " " + LastName;
                        }

                        if (PendingRequest && ConfigManager.Instance.GetBool("txt_newrequestnotification", true) && ConfigManager.Instance.GetBool("txt_notifications", true))
                        {
                            NotificationWindow.ShowNotification("Pending Contact", String.Format("{0} has requested you be added to their contact list.", MemberNickname));
                        }

                        if (ReceivedFriendCount >= FriendCount)
                            BlazeGames.IM.Client.MainWindow.Instance.page_Contacts.Draw();
                    }

                    if (ReceivedFriendCount == FriendCount)
                        clientSocket.SendPacket(Packet.New(Packets.PAK_CLI_OFFLNMSGRQST));
            }, null);
        }
Exemple #7
0
        void HandleFriendRemoveDeliver(ClientSocket clientSocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int MemberID = pak.Readint();

                if (Contacts.ContainsKey(MemberID))
                    Contacts.Remove(MemberID);

                BlazeGames.IM.Client.MainWindow.Instance.page_Contacts.Draw();
            }, null);
        }
Exemple #8
0
        void HandleFriendListResponse(ClientSocket clientSocket, Packet pak)
        {
            int FriendsCount = pak.Readint();
            FriendCount = FriendsCount;

            for (int i = 0; i < FriendsCount; i++)
            {
                    int FriendID = pak.Readint();
                    try
                    {
                        clientSocket.SendPacket(Packet.New(Packets.PAK_CLI_MEMINFORQST, FriendID));
                    }
                    catch(Exception ex) { Console.WriteLine(ex.ToString()); }

            }

            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                LoginComplete = true;
                BlazeGames.IM.Client.MainWindow.Instance.txt_nickname.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.txt_status.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.txt_search.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.profile_image.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.nav_bar.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.listbox1.Visibility = Visibility.Visible;

                BlazeGames.IM.Client.MainWindow.Instance.btn_ProfileSettings.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_AddFriend.Visibility = Visibility.Visible;

                BlazeGames.IM.Client.MainWindow.Instance.btn_chat.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_close.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_contacts.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_home.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_minimize.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.btn_settings.Visibility = Visibility.Visible;
                SlideFade.StartAnimationIn(BlazeGames.IM.Client.MainWindow.Instance.wnd);

                BlazeGames.IM.Client.MainWindow.Instance.page_Login.Visibility = Visibility.Hidden;
                BlazeGames.IM.Client.MainWindow.Instance.page_Home.Visibility = System.Windows.Visibility.Visible;
                SlideFade.StartAnimationIn(BlazeGames.IM.Client.MainWindow.Instance.page_Home);

                BlazeGames.IM.Client.MainWindow.Instance.page_Login.btn_login.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.page_Login.Loading.Visibility = Visibility.Hidden;

                BlazeGames.IM.Client.MainWindow.Instance.page_Login.txt_loading.Visibility = Visibility.Hidden;
                BlazeGames.IM.Client.MainWindow.Instance.page_Login.txt_account.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.page_Login.txt_password.Visibility = Visibility.Visible;
                BlazeGames.IM.Client.MainWindow.Instance.page_Login.txt_loading.Content = "Loading Your Account";
            }, null);
        }
Exemple #9
0
        void HandleCallRequest(ClientSocket clientsocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int MemberID = pak.Readint();
                Contact contact = Contacts[MemberID];
                string UDPAddress = pak.Readstring();
                int Port = pak.Readint();

                NotificationWindow.ShowCallNotification(contact, UDPAddress, Port);
            }, null);
        }
Exemple #10
0
 void HandleCallDenyRequest(ClientSocket clientsocket, Packet pak)
 {
     this.Dispatcher.Invoke((MethodInvoker)delegate
     {
         int MemberID = pak.Readint();
         Contact contact = Contacts[MemberID];
         contact.CallActive = false;
         VCallCore.EndCall(MemberID);
         SoundManager.VoiceCallingSound.Stop();
         NotificationWindow.RemoveCallNotification(contact);
     }, null);
 }
Exemple #11
0
        void HandleCallAcceptRequest(ClientSocket clientsocket, Packet pak)
        {
            this.Dispatcher.Invoke((MethodInvoker)delegate
            {
                int MemberID = pak.Readint();
                string UDPAddress = pak.Readstring();
                int Port = pak.Readint();

                VCallCore.StartCall(MemberID, new IPEndPoint(IPAddress.Parse(UDPAddress), Port));
                SoundManager.VoiceCallingSound.Stop();

            }, null);
        }
Exemple #12
0
        public static void HandleMessageSend(SocketConnection conn, Packet pak)
        {
            if (conn.ConnectionData.ContainsKey("Member"))
            {
                Member memfrom = (Member)conn.ConnectionData["Member"];
                int MemberSendTo = pak.Readint();
                string Message = pak.Readstring();

                if (memfrom.Friends.Contains(Convert.ToString(MemberSendTo)))
                {
                    if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberSendTo))
                        ServerSocket.Instance.MemberConnections[MemberSendTo].SendPacket(Packet.New(Packets.PAK_SRV_MSGDLVR, memfrom.ID, Message));
                    else
                    {
                        OfflineMessageManager.Instance.NewOfflineMessage(memfrom.ID, MemberSendTo, Message);
                    }
                }
                else
                {
                    //TODO: Notify the member that the friend is not in their list
                }
            }
        }
Exemple #13
0
        public static void HandleMemberInfoRequest(SocketConnection conn, Packet pak)
        {
            int MemberID = 0;

            if (conn.ConnectionData.ContainsKey("Member"))
            {
                try
                {
                    Packet pak2 = new Packet(null);
                    pak2.Write(Packets.PAK_SRV_MEMINFORESP);

                    MemberID = pak.Readint();
                    Member mem = conn.ConnectionData["Member"] as Member;
                    Member member;
                    if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberID))
                        member = ServerSocket.Instance.MemberConnections[MemberID].ConnectionData["Member"] as Member;
                    else
                        member = new Member(MemberID, conn.SqlConnection);
                    if (member.IsValid)
                    {
                        pak2.Write(true);
                        pak2.Write(MemberID);
                        pak2.Write(member.Nickname);
                        pak2.Write(member.MemberData);
                        pak2.Write(member.Authority);
                        pak2.Write(member.StatusCode);
                        pak2.Write(mem.PendingFriends.Contains(MemberID.ToString()));
                        pak2.Write(member.FirstName);
                        pak2.Write(member.LastName);
                        pak2.Write(member.IsPremiumIM);
                        pak2.Write(member.NameFontColor);
                        pak2.Write(member.StatusFontColor);
                    }
                    else
                        pak2.Write(false);

                    conn.SendPacket(pak2);
                }
                catch (Exception ex) { Console.WriteLine(ex.ToString()); }
            }

            Console.WriteLine("HandleMemberInfoRequest({0}); SqlState: {1}", MemberID, conn.SqlConnection.State);
        }
Exemple #14
0
        public static void HandleFriendRemoveRequest(SocketConnection conn, Packet pak)
        {
            if (conn.ConnectionData.ContainsKey("Member"))
            {
                Member member1 = (Member)conn.ConnectionData["Member"];
                int MemberID = pak.Readint();

                Member member2;
                if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberID))
                    member2 = ServerSocket.Instance.MemberConnections[MemberID].ConnectionData["Member"] as Member;
                else
                    member2 = new Member(MemberID, conn.SqlConnection);

                if (!member2.IsValid || !member1.Friends.Contains(member2.ID.ToString()))
                    return;

                member1.Friends.Remove(member2.ID.ToString());
                member2.Friends.Remove(member1.ID.ToString());

                member1.Save();
                member2.Save();

                if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberID))
                    ServerSocket.Instance.MemberConnections[MemberID].SendPacket(Packet.New(Packets.PAK_SRV_FRNDRMVDLVR, member1.ID));
                conn.SendPacket(Packet.New(Packets.PAK_SRV_FRNDRMVDLVR, member2.ID));
            }
        }
Exemple #15
0
        public static void HandleFriendDenyRequest(SocketConnection conn, Packet pak)
        {
            if (conn.ConnectionData.ContainsKey("Member"))
            {
                Member member1 = (Member)conn.ConnectionData["Member"];

                int MemberID = pak.Readint();

                Member member2;
                if (ServerSocket.Instance.MemberConnections.ContainsKey(MemberID))
                    member2 = ServerSocket.Instance.MemberConnections[MemberID].ConnectionData["Member"] as Member;
                else
                    member2 = new Member(MemberID, conn.SqlConnection);

                if (!member2.IsValid || member1.Friends.Contains(member2.ID.ToString()))
                    return;

                if (member1.PendingFriends.Contains(member2.ID.ToString()))
                {
                    member1.PendingFriends.Remove(member2.ID.ToString());
                    member1.Save();
                }
            }
        }