예제 #1
0
        //Case Methoden
        private static void SendChatNachricht(ClientData client, Packet p)
        {
            DatenbankArgs args = client.db_Manager.Kurse.sendChat(
                client.autor,           //(string)p.Data["C_Sendername"],
                (string)p.Data["C_Inhalt"],
                (int)p.Data["K_ID"]);

            if (!args.Success)
            {
                ClientHandler.Ausgabe("sendChat", "null");
            }
            else
            {
                Console.WriteLine(client.autor + ": " + (string)p.Data["C_Inhalt"]);
                //An alle eingelogten Clients senden
                //UpdateAll();
            }
            Packet response = new Packet(PacketType.SendChatNachricht, null, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);

            //neue Nachricht wurde empfangen -> an alle Clients weiterleiten
            Thread.Sleep(50);
            //update Packet
            args = client.db_Manager.Kurse.getChat();
            if (!args.Success)
            {
                ClientHandler.Ausgabe("sendChat", "SendChatUpdate");
            }
            else
            {
                Packet updateChat = new Packet(PacketType.UpdateChat, args.Data, "server");
                ClientHandler.SendPacketToAllLoggedInClients(updateChat);
            }
        }
예제 #2
0
        //-----------------------

        //Start Server
        static void Main(string[] args)
        {
            //Server starten
            ClientHandler.StartServer(ip, port);    //Server starten
            //config
            ClientHandler.Ausgabe("Config", "IP: " + ip);
            ClientHandler.Ausgabe("Config", "PORT: " + port);
            //alte datensätze löschen
            DbAdapter.Klasse.deleteOld();
            ClientHandler.Ausgabe("DB", "delete old Data. \n");
        }
예제 #3
0
        private static void GetSchülerInKurs(ClientData client, Packet p)
        {
            DatenbankArgs args = client.db_Manager.Kurse.getSchüler((int)p.Data["K_ID"]);

            if (args.Success == false)
            {
                ClientHandler.Ausgabe("getSchülerInKurs", "null");
            }

            Packet response = new Packet(PacketType.GetSchülerInKurs, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #4
0
        private static void GetEreignisse(ClientData client)
        {
            DatenbankArgs args = client.db_Manager.Kurse.getEreignisse();

            if (!args.Success)
            {
                ClientHandler.Ausgabe("GetEreignisse", "null");
            }

            Packet response = new Packet(PacketType.GetEreignisse, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #5
0
        private static void GetLehrer(ClientData client)
        {
            DatenbankArgs args = client.db_Manager.Lehrer.getAll();

            if (!args.Success)
            {
                ClientHandler.Ausgabe("GetLehrer", args.Error);
            }

            Packet response = new Packet(PacketType.GetLehrer, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #6
0
        private static void DeleteEreignis(ClientData client, Packet p)
        {
            DatenbankArgs args = client.db_Manager.Kurse.deleteEreignis((int)p.Data["E_ID"]);

            if (!args.Success)
            {
                ClientHandler.Ausgabe("EditEreigniss", args.Error);
            }

            Packet response = new Packet(PacketType.DeleteEreignis, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #7
0
        private static void GetLehrerofKurs(ClientData client, Packet packet)
        {
            DatenbankArgs args = client.db_Manager.Kurse.getLehrer((int)packet.Data["K_ID"]);

            if (!args.Success)
            {
                ClientHandler.Ausgabe("GetLehrerofKurs", args.Error);
            }

            Packet response = new Packet(PacketType.GetLehrerofKurs, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #8
0
        private static void GetChat(ClientData client)
        {
            DatenbankArgs args = client.db_Manager.Kurse.getChat();

            if (!args.Success)
            {
                ClientHandler.Ausgabe("getChat", "null");
            }

            Console.WriteLine(client.email);
            Packet response = new Packet(PacketType.GetChat, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #9
0
        private static void GetSchülerInKlasse(ClientData client, Packet packet)
        {
            DatenbankArgs args = client.db_Manager.Klasse.getSchüler(
                Convert.ToInt32(packet.Data["Kl_ID"])
                );

            if (!args.Success)
            {
                ClientHandler.Ausgabe("GetSchülerInKlasse", "null");
            }

            Packet response = new Packet(PacketType.GetSchülerInKlasse, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #10
0
        static Packet Klassenwahl(ClientData client)
        {
            try
            {
                //idAbfragen
                //kurse abfragen
                DatenbankArgs args = client.db_Manager.Schüler.getKlassenNamen();

                if (args.Success == false)
                {
                    ClientHandler.Ausgabe("Klassenwahl", "null");
                }

                return(new Packet(PacketType.Klassenwahl, args.Data, args.Success, args.Error));
            }
            catch (Exception exc)
            {
                throw new Exception(">>Klassenwahl: " + exc);
            }
        }
예제 #11
0
        private static void SendEreigniss(ClientData client, Packet p)
        {
            DatenbankArgs args = client.db_Manager.Kurse.sendEreigniss(
                (int)p.Data["K_ID"],
                (string)p.Data["E_Art"],
                (DateTime)p.Data["E_Fälligkeitsdatum"],
                client.autor, //(string)p.Data["E_Autor"],
                (string)p.Data["E_Beschreibung"]);

            if (!args.Success)
            {
                ClientHandler.Ausgabe("SendEreigniss", "null");
            }
            else
            {
                Console.WriteLine(client.autor + ": " + (string)p.Data["E_Beschreibung"]);
            }
            Packet response = new Packet(PacketType.SendEreigniss, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #12
0
        private static void EditEreigniss(ClientData client, Packet p)
        {
            DatenbankArgs args = client.db_Manager.Kurse.editEreignis(
                (int)p.Data["K_ID"],
                (string)p.Data["E_Art"],
                DateTime.Now,
                (DateTime)p.Data["E_Fälligkeitsdatum"],
                (int)p.Data["E_ID"],
                client.autor,
                (string)p.Data["E_Beschreibung"]
                );

            if (!args.Success)
            {
                ClientHandler.Ausgabe("EditEreigniss", args.Error);
            }

            Packet response = new Packet(PacketType.EditEreigniss, args.Data, args.Success, args.Error);

            ClientHandler.SendSinglePacket(client, response);
        }
예제 #13
0
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Public Packets
        static bool PublicPacketHandler(Packet p, ClientData client)
        {
            Packet response = null;

            switch (p.PacketType)
            {
            case PacketType.SchülerLogin:
                //DB-----   Try Login
                ClientHandler.Ausgabe("Auth", "Email: " + p.Data["email"] + " Passwort: " + p.Data["passwort"] + " try to login");

                DatenbankArgs args = client.db_Manager.Schüler.login(p.Data["email"].ToString(), p.Data["passwort"].ToString());
                if (args.Success)
                {
                    ClientHandler.ClientLogin(client.id);       //In liste schreiben
                    //Console.WriteLine(ClientHandler.checkLoginState(client.id));
                    //Daten speichern
                    client.email = p.Data["email"].ToString();      //email als Erkennungsmerkmal setzen
                    client.name  = (string)args.Data.Rows[0]["S_Name"];
                    client.vname = (string)args.Data.Rows[0]["S_Vorname"];
                    client.SetAutorKürzel();
                    ClientHandler.Ausgabe("Auth", client.vname + "." + client.name + "." + client.email + " (Schüler) eingeloggt");
                }
                else
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " Login fehlgeschlagen!");
                }
                response = new Packet(PacketType.SchülerLogin, args.Data, args.Success, args.Error);
                //------
                break;

            case PacketType.LehrerLogin:
                //DB-----   Try Login
                ClientHandler.Ausgabe("Auth", "Email: " + p.Data["email"] + " Passwort: " + p.Data["passwort"] + " try to login");

                args = client.db_Manager.Lehrer.login(p.Data["email"].ToString(), p.Data["passwort"].ToString());
                if (args.Success)
                {
                    ClientHandler.ClientLogin(client.id);       //In liste schreiben

                    client.email = p.Data["email"].ToString();  //email als Erkennungsmerkmal setzen
                    client.name  = (string)args.Data.Rows[0]["L_Name"];
                    client.vname = (string)args.Data.Rows[0]["L_Vorname"];
                    client.SetAutorKürzel();
                    client.hasRights = true;
                    ClientHandler.Ausgabe("Auth", client.vname + "." + client.name + "." + client.email + " (Lehrer) eingeloggt");
                }
                else
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " Login fehlgeschlagen!");
                }
                response = new Packet(PacketType.LehrerLogin, args.Data, args.Success, args.Error);
                //------
                break;

            case PacketType.SchülerRegistraition:     //Register Schüler

                args = client.db_Manager.Schüler.add(p.Data["name"].ToString(), p.Data["vname"].ToString(), p.Data["phone"].ToString(), p.Data["email"].ToString(), p.Data["klasse"].ToString(), p.Data["passwort"].ToString());
                if (args.Success)
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " wurde erfolgreich registriert");
                }
                else
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " Registrierung fehlgeschlagen!");
                }
                response = new Packet(PacketType.SchülerRegistraition, args.Data, args.Success, args.Error);
                break;

            case PacketType.LehrerRegistraition:     //Register Lehrer

                if ((string)p.Data["lehrerPasswort"] != lehrerPasswort)
                {
                    args = new DatenbankArgs("Lehrer Passwort falsch.\n Versuchen Sie es erneut.");
                }
                else
                {
                    args = client.db_Manager.Lehrer.add(p.Data["vname"].ToString(), p.Data["name"].ToString(), p.Data["anrede"].ToString(), p.Data["email"].ToString(), p.Data["passwort"].ToString(), p.Data["titel"].ToString());
                }
                if (args.Success)
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " wurde erfolgreich registriert");
                }
                else
                {
                    ClientHandler.Ausgabe("Auth", p.Data["email"] + " Registrierung fehlgeschlagen!");
                }
                response = new Packet(PacketType.LehrerRegistraition, args.Data, args.Success, args.Error);
                break;

            case PacketType.Klassenwahl:
                response = Klassenwahl(client);
                break;
            }

            if (response != null)
            {
                ClientHandler.SendSinglePacket(client, response);
                //ClientHandler.Ausgabe("Auth", "Anfrage wurde bearbeitet");
                return(true);
            }
            return(false);
        }
예제 #14
0
        //Data Manager
        //gillt für alle verbundenen Clients
        public static void DataManager(Packet p)
        {
            try
            {
                //warten bis Packet verarbeitet wird --> Socket bereit
                Thread.Sleep(100);
                //----------------

                ClientData client = ClientHandler.GetClientByID(p.SenderId);
                if (client == null)
                {
                    return;
                }
                //Anmeldunsfreie Packete+++++++++++++++++++++++++++++++++++++++++++++++
                if (PublicPacketHandler(p, client))
                {
                    return; //packet ist bereits bearbeitet
                }

                //Anmeldungspflicht+++++++++++++++++++++++++++++++++++++++++++++++++++++
                //Console.WriteLine(client.id);
                //Console.WriteLine(ClientHandler.checkLoginState(client.id));
                if (!ClientHandler.checkLoginState(client.id))
                {
                    ClientHandler.Send_Error_Message_to_Client(client, "Bitte Anmeldung durchführen!");
                    return;
                }

                //Angemeldet: (gesicherter Bereich)
                //Console.WriteLine("received " + p.PacketType);
                switch (p.PacketType)
                {
                case PacketType.Default:
                    //zum Testen
                    Thread.Sleep(500);
                    ClientHandler.Ausgabe("Debug", "packet Default received");
                    ClientHandler.SendSinglePacket(client, p);

                    break;

                case PacketType.GetGewählteKurse:
                    GetKurse(client);
                    break;

                case PacketType.GetAlleKurse:
                    Kurswahl(client);
                    break;

                case PacketType.KursUpdate:
                    UpdateKurse(client, p);
                    break;

                case PacketType.GetSchülerInKurs:
                    GetSchülerInKurs(client, p);
                    break;

                case PacketType.GetSchülerInKlasse:
                    GetSchülerInKlasse(client, p);
                    break;

                case PacketType.GetChat:
                    GetChat(client);
                    break;

                case PacketType.SendChatNachricht:
                    SendChatNachricht(client, p);
                    break;

                case PacketType.GetEreignisse:
                    GetEreignisse(client);
                    break;

                case PacketType.SendEreigniss:
                    SendEreigniss(client, p);
                    break;

                case PacketType.KlasseErstellen:
                    KlasseErstellen(client, p);
                    break;

                case PacketType.GetKlasse:
                    getKlasse(client);
                    break;

                case PacketType.CreateKurs:
                    CreateKurs(client, p);
                    break;

                case PacketType.GetLehrer:
                    GetLehrer(client);
                    break;

                case PacketType.DeleteEreignis:
                    DeleteEreignis(client, p);
                    break;

                case PacketType.EditEreigniss:
                    EditEreigniss(client, p);
                    break;

                case PacketType.GetLehrerofKurs:
                    GetLehrerofKurs(client, p);
                    break;

                default:
                    ClientHandler.Send_Error_Message_to_Client(client, "Unerwartetes Packet!!!");
                    break;
                }
            }
            catch (Exception exc)
            {
                ClientHandler.Ausgabe("PacketManager", exc.Message);
            }
        }