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; } } }
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(); } }
private void button2_Click(object sender, EventArgs e) { clientProxy.createTopic(CreatTextBox.Text); listBox1.Items.Clear(); List <string> l = new List <string>(); l = clientProxy.listTopics(); foreach (var t in l) { listBox1.Items.Add(t); } }
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(); }
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); } }