Ejemplo n.º 1
0
        private static void joinTopicsManager(string username)
        {
            ChannelFactory <TopicsManager> dupFactory = null;
            TopicsManager clientProxy = null;

            dupFactory = new ChannelFactory <TopicsManager>(
                new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:9000/TopicManager"));
            dupFactory.Open();
            clientProxy = dupFactory.CreateChannel();
            while (true)
            {
                Console.WriteLine("************TOPICS MANAGER************");
                Console.WriteLine("Liste des rooms diponibles : ");
                List <string> list = clientProxy.listTopics();
                foreach (var t in list)
                {
                    Console.WriteLine(t);
                }
                Console.WriteLine("1. Se connecter a une room \n2.Créer un nouveau chatroom");

                switch (Console.ReadLine())
                {
                case "1":
                    Console.WriteLine("Entrez le nom de la room");
                    joinChatroom(clientProxy.joinTopic(Console.ReadLine()), username);

                    break;

                case "2":
                    Console.WriteLine("Entrez le nom de la room");
                    clientProxy.createTopic(Console.ReadLine());
                    break;
                }
            }
        }
Ejemplo n.º 2
0
            static void Main(string[] args)
            {
                Chatter       Manuelle = new Chatter("Manuelle"), Léna = new Chatter("Léna");
                TopicsManager tm = new TopicsManager();

                tm.createTopic("Mon corps tout nu");
                tm.createTopic("La pls, mon histoire");
                Console.WriteLine("The openned topics are : ");

                foreach (String s in tm.topics.Keys)
                {
                    Console.WriteLine(s);
                }

                Chatroom cr = tm.joinTopic("La pls, mon histoire");

                cr.join(Manuelle);
                cr.join(Léna);
                cr.post("Coucou ma chérie, comment s'est passé ta journée ? Je veux tout savoir ;) <3 <3 <3", Manuelle);
                Console.ReadKey();
                cr.post("J'ai passé le balai toute la journée et toi mon coeur ? :$ <3 <3", Léna);
                Console.ReadKey();
                cr.post("Oh trop bien ! Moi j'ai passé l'aspirateur, j'ai retrouvé une chips derrière mon pc (encore) :@ ", Manuelle);
                Console.ReadKey();
                cr.post("C'est encore tes connards de potes ! De toute façon je peux pas les blairer, surtout Théo ! Il est méchant mais le pire c'est qu'il a raison ! :(", Léna);
                Console.ReadKey();
                cr.quit(Manuelle);
                cr.post("Oh non je suis toute seule ! Manu mon amour reviens moi ! Bon tant pis je vais allé voir un de ses potes comme j'ai l'habitude ! Je suis une coquine hihihi", Léna);
                Console.ReadLine();



                AuthentificationManager test = new AuthentificationManager();

                try
                {
                    test.addUser("Manuelle", "Léna");
                }
                catch (UserExistsException e)
                {
                    e.DisplayLogReportShow();
                }
            }
Ejemplo n.º 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            var chatroom = new chatForm(clientProxy.joinTopic((string)listBox1.SelectedItem), username);

            chatroom.Show();
        }
Ejemplo n.º 4
0
            static void Main(string[] args)
            {
                Chatter       Manuelle = new Chatter("Manuelle"), Léna = new Chatter("Léna");
                TopicsManager tm = new TopicsManager();

                tm.createTopic("Mon corps tout nu");
                tm.createTopic("La pls, mon histoire");
                Console.WriteLine("The openned topics are : ");

                foreach (String s in tm.topics.Keys)
                {
                    Console.WriteLine(s);
                }

                Chatroom cr = tm.joinTopic("La pls, mon histoire");

                cr.join(Manuelle);
                cr.join(Léna);
                cr.post("Coucou ma chérie, comment s'est passé ta journée ? Je veux tout savoir ;) <3 <3 <3", Manuelle);
                Console.ReadKey();
                cr.post("J'ai passé le balai toute la journée et toi mon coeur ? :$ <3 <3", Léna);
                Console.ReadKey();
                cr.post("Oh trop bien ! Moi j'ai passé l'aspirateur, j'ai retrouvé une chips derrière mon pc (encore) :@ ", Manuelle);
                Console.ReadKey();
                cr.post("C'est encore tes connards de potes ! De toute façon je peux pas les blairer, surtout Théo ! Il est méchant mais le pire c'est qu'il a raison ! :(", Léna);
                Console.ReadKey();
                cr.quit(Manuelle);
                cr.post("Oh non je suis toute seule ! Manu mon amour reviens moi ! Bon tant pis je vais allé voir un de ses potes comme j'ai l'habitude ! Je suis une coquine hihihi", Léna);
                Console.ReadLine();


                /*AuthentificationManager test = new AuthentificationManager();
                 *
                 * try
                 * {
                 *  test.addUser("Manuelle", "Léna");
                 *  test.addUser("Théo", "123");
                 *  test.addUser("Alexandre", "456");
                 *
                 *  test.save("Test.xml");
                 * }
                 * catch (UserExistsException e)
                 * {
                 *  e.DisplayLogReportShow();
                 * }
                 * catch (IOException e)
                 * {
                 *  Console.WriteLine(e.Message);
                 * }
                 * Console.WriteLine();
                 *
                 *
                 * test.checkRegistredUsers();
                 *
                 * try
                 * {
                 *  test.removeUser("Théo");
                 * }
                 * catch (UserUnknowException e)
                 * {
                 *  e.DisplayLogReportShow();
                 * }
                 *
                 * test.checkRegistredUsers();
                 *
                 * try
                 * {
                 *  test.authentify("Alexandre", "456");
                 * }
                 * catch(WrongPasswordException e)
                 * {
                 *  e.DisplayLogReportShow();
                 * }
                 * catch(UserUnknowException e)
                 * {
                 *  e.DisplayLogReportShow();
                 * }*/

                AuthentificationManager aut = null;

                if (File.Exists(PATH))
                {
                    aut = AuthentificationManager.load(PATH);
                    aut.checkRegistredUsers();
                }
                else
                {
                    aut = new AuthentificationManager();
                }


                Console.ReadLine();
            }
Ejemplo n.º 5
0
        private void Auth()
        {
            AuthentificationManager am = new AuthentificationManager();
            TopicsManager           tm = new TopicsManager();

            try
            {
                while (true)
                {
                    /* Vérification de la connexion avec le client */
                    if (!(clientSocket.Connected))
                    {
                        ctThread.Abort();
                    }

                    /* Nous avons créé chatLibrary.dll qui nous apporte les différents paquets utilisables par notre application*/
                    Packet packet = null;
                    try
                    {
                        packet = Packet.Receive(ns);
                    }
                    catch (SerializationException e)
                    {
                        Console.WriteLine(e);
                    }

                    /* Packet de login */
                    if (packet is AuthPacket)
                    {
                        AuthPacket ap = (AuthPacket)packet;
                        Console.Write("[AUTHENTIFICATION]User " + ap.login + " attempting to connect");
                        // flag contient le code d'erreur
                        int flag = am.authentify(ap.login, ap.password);
                        // packet de callback
                        LoginPacket bp = new LoginPacket(flag);
                        if (flag == 1)
                        {
                            /* User logged in */
                            Console.WriteLine(" SUCCESS");
                            User u = new User(ap.login, ap.password, ns);
                            u.chatter = new Chatter(ap.login);
                            ChatServer.addUser(u);
                            Packet.Send(bp, ns);

                            /* Displaying topics to user */
                            Console.Write("[SERVER]Sending topics : ");
                            Console.Write("[");
                            for (int i = 0; i < tm.getRooms().Count; ++i)
                            {
                                if (i == tm.getRooms().Count - 1)
                                {
                                    Console.Write(tm.getRooms()[i]);
                                }
                                else
                                {
                                    Console.Write(tm.getRooms()[i] + ", ");
                                }
                            }
                            Console.WriteLine("]");
                            // Envoie des chatrooms disponibles
                            TopicsPacket tp = new TopicsPacket(tm.getRooms());
                            Packet.Send(tp, ns);
                        }
                        else
                        {
                            Console.WriteLine("[AUTHENTIFICATION]Error, unable to connect the user " + ap.login + ", error code : " + flag);
                            Packet.Send(bp, ns);
                            this.Auth();
                        }
                    }

                    /* Paquet d'inscription d'un nouvel utilisateur */
                    if (packet is SubscribePacket)
                    {
                        SubscribePacket     sb = (SubscribePacket)packet;
                        SubscribeValidation sv = new SubscribeValidation(am.addUser(sb.login, sb.password));
                        if (sv.value)
                        {
                            Console.WriteLine("[REGISTER]User " + sb.login + " successfully created");
                        }
                        else
                        {
                            Console.WriteLine("[REGISTER]Error during " + sb.login + " account creation");
                        }
                        Packet.Send(sv, ns);
                    }

                    /* Paquet pour rejoindre une chatroom */
                    if (packet is JoinChatRoomPacket)
                    {
                        JoinChatRoomPacket jcp = (JoinChatRoomPacket)packet;

                        if (tm.getRooms().Contains(jcp.chatRoom))
                        {
                            bool flag = tm.joinTopic(jcp.chatRoom, ChatServer.getUser(jcp.user));
                            if (flag)
                            {
                                Console.WriteLine("[TOPICS]User " + jcp.user + " joined chatroom : " + jcp.chatRoom);
                            }
                            else
                            {
                                Console.WriteLine("[TOPICS]Cannont connect user to the chatroom, user : "******" is already in the chatroom : " + jcp.chatRoom);
                            }
                            Chatroom          ct  = (Chatroom)tm.getRoom(jcp.chatRoom);
                            ListChatterPacket lcp = new ListChatterPacket(ct.getChatters(), jcp.chatRoom);
                            Thread.Sleep(500);
                            foreach (User u in ct.chatters)
                            {
                                Console.WriteLine("[TOPICS]Sending user list from " + jcp.chatRoom + " to user " + u.login);
                                Packet.Send(lcp, u.ns);
                            }
                        }
                    }

                    /* Paquet pour créer une chatroom */
                    if (packet is CreateChatRoomPacket)
                    {
                        bool flag;
                        CreateChatRoomValidationPacket ccvp;
                        CreateChatRoomPacket           ccp = (CreateChatRoomPacket)packet;
                        if (!tm.topics.ContainsKey(ccp.chatRoom))
                        {
                            flag = tm.createTopic(ccp.chatRoom);
                            if (flag)
                            {
                                Console.WriteLine("[TOPICS]User " + ccp.user + " created chatroom : " + ccp.chatRoom);
                                TopicsPacket tp = new TopicsPacket(tm.getRooms());
                                foreach (User u in ChatServer.chattingUsers)
                                {
                                    Packet.Send(tp, u.ns);
                                }
                            }
                            /* Broadcast la création de room avec affichage de message */

                            ccvp = new CreateChatRoomValidationPacket(flag, ccp.chatRoom);
                        }
                        else
                        {
                            flag = false;
                            Console.WriteLine("[TOPICS]Chatroom creation failed, chatroom : " + ccp.chatRoom + " already exists");
                            ccvp = new CreateChatRoomValidationPacket(flag, ccp.chatRoom);
                        }
                        Packet.Send(ccvp, ns);
                    }

                    /* Paquet d'envoie de message */
                    if (packet is MessagePacket)
                    {
                        MessagePacket mp = (MessagePacket)packet;
                        Console.WriteLine("[CHATROOM]Posting message : [" + mp.message + "] in chatroom :" + mp.chatroom + " by user : "******"[CHATROOM]User : "******" is leaving chatroom : " + lcrp.chatRoom);

                        /* Il faut lock ici pour éviter un problème dans la liste des utilisateurs
                         * Nous evitons ainsi d'envoyer un message à un utilisateur déjà déconnecté */
                        lock (thisLock)
                        {
                            cible.quit(ChatServer.getUser(lcrp.user));
                            Chatroom          ct  = (Chatroom)tm.getRoom(lcrp.chatRoom);
                            ListChatterPacket lcp = new ListChatterPacket(ct.getChatters(), lcrp.chatRoom);
                            Thread.Sleep(1000);
                            foreach (User u in ct.chatters)
                            {
                                Console.WriteLine("[TOPICS]Sending user list from " + lcrp.chatRoom + " to user " + u.login);
                                Packet.Send(lcp, u.ns);
                            }
                        }
                    }

                    /* Paquet de déconnexion d'un utilisateur */
                    if (packet is DisconnectPacket)
                    {
                        DisconnectPacket dp = (DisconnectPacket)packet;
                        Thread.Sleep(200);
                        User u = ChatServer.getUser(dp.user);
                        u.ns.Close();
                        ChatServer.removeUser(u);
                        this.clientSocket.Close();
                        Console.WriteLine("[SERVER]A user disconnected properly");
                    }
                }
            }
            catch (IOException e)
            {
                Console.WriteLine("[SERVER]A user crashed");
                ctThread.Join();
            }
            catch (NullReferenceException ex)
            {
                Console.WriteLine("[TOPICS]Impossible de retirer le client, celui-ci n'existe pas dans la chatroom");
                Console.WriteLine(ex);
            }
        }