Ejemplo n.º 1
0
 public void Remove(ServerModel server)
 {
     context.Servers.Remove(server);
     context.SaveChanges();
 }
Ejemplo n.º 2
0
        public static void ConnectionHandler(object newConnection)
        {
            Socket connection = (Socket)newConnection;
            var buffer = new byte[BUFFERLENGTH];
            var bufferOut = new byte[BUFFERLENGTH];
            var bytesReceived = connection.Receive(buffer);
            var command = encoding.GetString(buffer, 0, bytesReceived);
            string[] parts = command.Split(' ');
            string response = null;
            var remoteIPEndPoint = connection.RemoteEndPoint as IPEndPoint;
            var ip = remoteIPEndPoint.Address.ToString();

            if (parts[0] != "WAMP/1.0" || parts.Length < 2)
                response = errorMessage + "Incorrect syntax";

            command.Substring(9);

            switch (parts[1])
            {
                case "ADD":
                    {
                        var name = parts[2];
                        var port = parts[3];
                        var model = repository.GetByIPAndPort(ip, port);

                        if (model != null)
                        {
                            Console.WriteLine($"{connection.RemoteEndPoint} tried to add {name} on port {port} but it already exists");
                            response = message + $"Server {name} ({ip}:{port}) already exists in list of active servers";
                        }
                        else
                        {
                            model = new ServerModel
                            {
                                Name = name,
                                Ip = ip,
                                Port = port,
                            };
                            repository.Add(model);
                            response = message + $"Server {name} ({ip}:{port}) added to list of active servers";
                            Console.WriteLine($"Added server {name} on {ip}:{port}");
                        }
                    }
                    break;
                case "REMOVE":
                    {
                        var port = parts[2];
                        var model = repository.GetByIPAndPort(ip, port);
                        if (model == null)
                        {
                            response = message + $"No server with address {ip}:{port} listed as active server";
                            Console.WriteLine($"{connection.RemoteEndPoint} tried to remove server from port {port} but no such server exists");
                        }
                        else
                        {
                            repository.Remove(model);
                            response = message + $"Server {model.Name} ({ip}:{port}) removed from list of active servers";
                            Console.WriteLine($"Removed server {model.Name} ({ip}:{port})");
                        }
                    }
                    break;
                case "AVAILABLE_SERVERS":
                    {
                        response = serverlist;
                        var servers = repository.GetActiveServers();
                        foreach (var server in servers)
                        {
                            response += $"{server.Name},{server.Ip}:{server.Port}, ";
                        }
                        response.Remove(response.Length - 2);
                        Console.WriteLine($"Sent serverlist to {connection.RemoteEndPoint}");
                    }
                    break;
                default:
                    response = errorMessage + $"Unknown command {parts[1]}";
                    Console.WriteLine($"{connection.RemoteEndPoint} sent unknown command ({parts[1]})");
                    break;
            }
            bufferOut = encoding.GetBytes(response);
            connection.Send(bufferOut);
            connection.Shutdown(SocketShutdown.Both);
        }
Ejemplo n.º 3
0
 public void Add(ServerModel server)
 {
     context.Servers.Add(server);
     context.SaveChanges();
 }