Пример #1
0
        private static void Connect(SshServer server, string client)
        {
            try {
                using (Stream clientStream = server.Connect(client, 8000))
                {
                    /* Simple HTTP request. Remove this and put your own
                     * operations here. */

                    Console.WriteLine("Connected");
                    string message = "GET  / HTTP/1.1\r\n" +
                                     "User - Agent: Server\r\n" +
                                     "Host: 169.254.73.20:8000\r\n\r\n";
                    byte[] sendBuffer = Encoding.UTF8.GetBytes(message);
                    clientStream.Write(sendBuffer, 0, sendBuffer.Length);
                    byte[] headerBuffer = new byte[400];
                    clientStream.Read(headerBuffer, 0, 300);
                    Console.WriteLine(Encoding.UTF8.GetString(headerBuffer));
                    byte[] bodyBuffer = new byte[100];
                    clientStream.Read(bodyBuffer, 0, 100);
                    Console.WriteLine(Encoding.UTF8.GetString(bodyBuffer));
                    GetConnectedClients(server);
                }
            } catch (SshClientNotFoundException ex) {
                Console.WriteLine("Error the client was not found in the list of connected clients.");
            }
        }
Пример #2
0
        static void Main()
        {
            var server = new SshServer(new IPEndPoint(IPAddress.Any, 8888));
            var authenticationMethods = new List <FxSsh.AuthenticationMethod>();

            server.SetClientKeyRepository(new ClientKeyRepository());
            authenticationMethods.Add(AuthenticationMethod.PublicKey);
            // server.AuthenticationMethods = authenticationMethods;
            // Called when a client has connected to the server.
            server.ConnectionAccepted += ServerConnectionAccepted;

            server.Start();
            while (true)
            {
                var input   = Console.ReadLine().Split(" ");
                var command = input[0];
                switch (command)
                {
                case "Connect":
                    if (input.Length < 2)
                    {
                        return;
                    }
                    Connect(server, input[1]);
                    break;

                case "GetConnectedClients":
                    GetConnectedClients(server);
                    break;

                default:
                    break;
                }
            }
        }
Пример #3
0
        public async Task <IActionResult> CreateSshServer(string apiKey, string email)
        {
            if (!HasAccess(apiKey))
            {
                return(BadRequest("No AuthKey set or wrong auth key!"));
            }
            var model = new SshServer
            {
                Name        = "Please Change",
                SshUsername = "******",
                SshPassword = "******"
            };
            var user = await _userService.GetUserByEmail(email);

            if (user != null)
            {
                model.LiteDbUserId = user.Id.ToString();
                model.Owner        = user;
                if (!await _userManager.IsInRoleAsync(user, "OnPremise"))
                {
                    await _userManager.AddToRoleAsync(user, "OnPremise");
                }
            }

            var sshServer = await _sshServerSerivce.Insert(model);

            if (user == null)
            {
                await _reservedServersService.Add(new ReservedServer()
                {
                    Email = email, SshServerId = sshServer
                });
            }
            return(Ok(sshServer));
        }
        public async Task <bool> Update(SshServer sshServer, bool validate = true)
        {
            SshServer old = null;

            if (string.IsNullOrEmpty(sshServer.SshPassphrase) || string.IsNullOrEmpty(sshServer.SshPassword))
            {
                old = await FindOne(sshServer.Id);

                if (old != null)
                {
                    if (string.IsNullOrEmpty(sshServer.SshPassphrase))
                    {
                        sshServer.SshPassphrase = old.SshPassphrase;
                    }
                    if (string.IsNullOrEmpty(sshServer.SshPassword))
                    {
                        sshServer.SshPassword = old.SshPassword;
                    }
                }
            }
            if (validate)
            {
                ValidateSshServer(sshServer);
            }

            return(await _liteDb.LiteDatabaseAsync.GetCollection <SshServer>("SshServer")
                   .UpdateAsync(sshServer));
        }
        private static void ValidateSshServer(SshServer server)
        {
            if (server.SshPort <= 0)
            {
                throw new ValidateException("SshPort", "You need a SSH port!");
            }

            if (string.IsNullOrEmpty(server.SshUsername))
            {
                throw new ValidateException("SshUsername", "You need a username!");
            }

            if (string.IsNullOrEmpty(server.SshPassword) && (server.SshKeyFileName == null || !server.SshKeyFileName.Any()))
            {
                throw new ValidateException("SshPassword", "You need at least a password or a key file!");
            }

            if (server.SshUsername == "root")
            {
                throw new ValidateException("SshUsername", "Dont use root here!");
            }

            try
            {
                RconStatic.AuthenticateOnTheSshServer(server);
            }
            catch (CommandException e)
            {
                throw new ValidateException("Id", e.Message);
            }
        }
Пример #6
0
        public static void StartSshServer()
        {
            if (!UserConfiguration.Current.EnableSsh || _server != null)
            {
                return;
            }

            _server = new SshServer(new StartingInfo(IPAddress.IPv6Any, UserConfiguration.Current.SshPort));
            _server.ConnectionAccepted += (s, e) => new GitSshService(e);
            _server.ExceptionRasied    += (s, e) =>
            {
                if (!(e is SshConnectionException))
                {
                    XTrace.Log.Error(e.ToString());
                }
            };
            foreach (var key in UserConfiguration.Current.HostKeys)
            {
                _server.AddHostKey(key.KeyType, key.KeyXml);
            }
            for (var i = 1; i <= 10; i++)
            {
                try
                {
                    _server.Start();
                    XTrace.WriteLine("SSH server started.");
                    break;
                }
                catch (Exception ex)
                {
                    XTrace.WriteLine("Attempt to start SSH server failed in {0} times. {1}", i, ex);
                    Task.Delay(1000).Wait();
                }
            }
        }
        public static PavlovServer[] PavlovServers(SshServer sshServer, PavlovServerService pavlovServerService)
        {
            pavlovServerService.Upsert(PavlovServer(sshServer), false);
            var pavlovServers = pavlovServerService.FindAll().GetAwaiter().GetResult();

            return(pavlovServers);
        }
 public async Task <int> Insert(SshServer sshServer, bool validate = true)
 {
     if (validate)
     {
         ValidateSshServer(sshServer);
     }
     return(await _liteDb.LiteDatabaseAsync.GetCollection <SshServer>("SshServer")
            .InsertAsync(sshServer));
 }
Пример #9
0
        public void Start()
        {
            this.server = new SshServer();
            // ServiceRegistered Events When Add Any
            this.server.AddHostKey("ssh-rsa", "<RSAKeyValue><Modulus>xXKzcIH/rzcfv2D7VcvLdxR5S5iw2TTsP65Aa82S4+9ZIqLPTNtuzr76Mz6Cx0yDOhawHlIujtalqaaQzaUvkudCtMcVMnj37OcCYz7XDAYejalCxf/vtJo7U4mnYdCM+nAOQKNIDKLGbLtGuEAGwdi560DOJY2plhnBf1oOI+k=</Modulus><Exponent>AQAB</Exponent><P>37kMr9YiU4cSqHqTJSjBJ/szG2O4n5xSIlPy4MZ4aAN5NALHxfsN0dq1y8NL6GTLMI5qoykvp4Bjrm2ZgU1cDQ==</P><Q>4e84rF+UsFBfQEKJc2pbACWWJjttNW0hccdQZzA3IUxRmd/Z4yEMr1L70TP0XV7dw1RDs1JyU7xnXBIbGy5ETQ==</Q><DP>vP0TbI6VnL3j0xMIrkFJOj8Ho0GQOrTQ5VLJP3wpRqR4hKk8nVBBEl+RZznpK73Jr5D/ICmwqezZSAYpwILbGQ==</DP><DQ>bHdzZtWwRYEgaXJIGL+7lnN1BT/MazTMNJpykEeGgBbqqgvcx/zq4RTezg26SEUuBANlSSbQukCeAoayurbYlQ==</DQ><InverseQ>Irq9vR7CXIVR+r09caYIxIY8BOig+HShN1bXvATERJcjTW2jUgJrUttDGNEx70/hBd7m1NWCZz5YO3RH9Bdf5w==</InverseQ><D>AqxsufxFcW9TDCAmQK4mwVdsoQjRp2jfcULmkM8fl9u40dtxTr6Csv5dz7qfKLWxHTGlDUDabCK2t/DCcZZoA3rsqwLADe4ZerDdg6xiq4MBzNprM8Y0IfNESEdFB9T0T73ONQCsMalUzEvUknC4Ed4Fya34LUHntgQtEhXpDJE=</D></RSAKeyValue>");
            this.server.AddHostKey("ssh-dss", "<DSAKeyValue><P>1fge/S/6Y42F73v/RhtkZQUEgNktLUzjf4zcJPse2JfXGqtg3lMaEiEDbb/2Nm4Q/M7iksZxlIxge0BkP1ul69+Tovl+Gg+hI+OPGaKlD/1dnX4D4i1FiOpnjtyoCTeZysJ5X8nO1lSInDRnRv46gHk4cHSFVKILKY7CVo1sf0s=</P><Q>tb2irBOnujteP+kf5HmH0yXepE8=</Q><G>HJfQK2Sdd5vN47HWVdmRRYhwAhiVoP98l7FZ3FzVxZvE/CurAL2xVrDi9modbLg0UA1JHeOi6h9FTI9ijepnqRscBKFlyIny0wh15sc8EMcZzG/vJVH2M48ps1knt793sxEwjU/SPYxE7UEX5HGa/KyLuP6Ev/0z4WOOIJ62B5w=</G><Y>ebWWjjGiFpfKfaXlrY3SiMorrkvge/UEeHd5E27RS4B/BBlm9OhdNBFq3zzILAa3X8KvDOGlVZgTYqDchp3/SK/Y8HsbqNyTyqDMNvcnHILDqSrWmGMQEA/0kGiPn0nwEcA87F1osCro7Y70SuLNwUOl3xh+gQKdi5V6WU75gaw=</Y><Seed>w0QY1PFWINvz3x2OZlVF6Vi5cCw=</Seed><PgenCounter>UQ==</PgenCounter><X>SFKXJnLYP8UM5tlOCpVQ0S2yE78=</X></DSAKeyValue>");

            this.server.ConnectionAccepted += server_ConnectionAccepted;
            this.server.Start();
        }
        public async Task <IActionResult> EditServer(SshServer server, bool remove = false)
        {
            if (!await CheckIfUserHasrights(server.Id))
            {
                return(Forbid());
            }

            ViewBag.Remove          = remove;
            server.HostingAvailable = ApiWithKeyController.ApiKeySet(_configuration);
            server.LiteDbUsers      = (await _userservice.FindAll()).ToList();
            return(View("Server", server));
        }
Пример #11
0
        static void Main(string[] args)
        {
            var server = new SshServer();

            server.AddHostKey("ssh-rsa", "BwIAAACkAABSU0EyAAQAAAEAAQADKjiW5UyIad8ITutLjcdtejF4wPA1dk1JFHesDMEhU9pGUUs+HPTmSn67ar3UvVj/1t/+YK01FzMtgq4GHKzQHHl2+N+onWK4qbIAMgC6vIcs8u3d38f3NFUfX+lMnngeyxzbYITtDeVVXcLnFd7NgaOcouQyGzYrHBPbyEivswsnqcnF4JpUTln29E1mqt0a49GL8kZtDfNrdRSt/opeexhCuzSjLPuwzTPc6fKgMc6q4MBDBk53vrFY2LtGALrpg3tuydh3RbMLcrVyTNT+7st37goubQ2xWGgkLvo+TZqu3yutxr1oLSaPMSmf9bTACMi5QDicB3CaWNe9eU73MzhXaFLpNpBpLfIuhUaZ3COlMazs7H9LCJMXEL95V6ydnATf7tyO0O+jQp7hgYJdRLR3kNAKT0HU8enE9ZbQEXG88hSCbpf1PvFUytb1QBcotDy6bQ6vTtEAZV+XwnUGwFRexERWuu9XD6eVkYjA4Y3PGtSXbsvhwgH0mTlBOuH4soy8MV4dxGkxM8fIMM0NISTYrPvCeyozSq+NDkekXztFau7zdVEYmhCqIjeMNmRGuiEo8ppJYj4CvR1hc8xScUIw7N4OnLISeAdptm97ADxZqWWFZHno7j7rbNsq5ysdx08OtplghFPx4vNHlS09LwdStumtUel5oIEVMYv+yWBYSPPZBcVY5YFyZFJzd0AOkVtUbEbLuzRs5AtKZG01Ip/8+pZQvJvdbBMLT1BUvHTrccuRbY03SHIaUM3cTUc=");
            server.AddHostKey("ssh-dss", "BwIAAAAiAABEU1MyAAQAAG+6KQWB+crih2Ivb6CZsMe/7NHLimiTl0ap97KyBoBOs1amqXB8IRwI2h9A10R/v0BHmdyjwe0c0lPsegqDuBUfD2VmsDgrZ/i78t7EJ6Sb6m2lVQfTT0w7FYgVk3J1Deygh7UcbIbDoQ+refeRNM7CjSKtdR+/zIwO3Qub2qH+p6iol2iAlh0LP+cw+XlH0LW5YKPqOXOLgMIiO+48HZjvV67pn5LDubxru3ZQLvjOcDY0pqi5g7AJ3wkLq5dezzDOOun72E42uUHTXOzo+Ct6OZXFP53ZzOfjNw0SiL66353c9igBiRMTGn2gZ+au0jMeIaSsQNjQmWD+Lnri39n0gSCXurDaPkec+uaufGSG9tWgGnBdJhUDqwab8P/Ipvo5lS5p6PlzAQAAACqx1Nid0Ea0YAuYPhg+YolsJ/ce");
            server.ConnectionAccepted += server_ConnectionAccepted;

            server.Start();

            Task.Delay(-1).Wait();
        }
Пример #12
0
        public static void StopSshServer()
        {
            if (_server == null)
            {
                return;
            }

            _server.Stop();
            _server = null;

            XTrace.WriteLine("SSH server stoped.");
        }
Пример #13
0
        public static void StopSshServer()
        {
            if (_server == null)
            {
                return;
            }

            _server.Stop();
            _server = null;

            Logger.Info("SSH server stoped.");
        }
Пример #14
0
        private static void GetConnectedClients(SshServer server)
        {
            var clients = server.GetConnectedClients();

            foreach (var c in clients)
            {
                Console.WriteLine(c.Name);
                var connections = c.Connections;
                foreach (var connection in connections)
                {
                    Console.WriteLine("---> " + connection.WhenConnected);
                }
            }
        }
 private static PavlovServer PavlovServer(SshServer sshServer)
 {
     return(new()
     {
         Name = "test",
         TelnetPort = 9100,
         DeletAfter = 7,
         TelnetPassword = "******",
         ServerPort = 9101,
         ServerFolderPath = "/home/steam/pavlovserver",
         ServerSystemdServiceName = "pavlovserver",
         ServerType = ServerType.Community,
         ServerServiceState = ServerServiceState.inactive,
         SshServer = sshServer
     });
 }
        public async Task <IActionResult> EditServer(int?serverId)
        {
            if (serverId != null && !await CheckIfUserHasrights((int)serverId))
            {
                return(Forbid());
            }
            var server = new SshServer();

            if (serverId != null && serverId != 0)
            {
                server = await _service.FindOne((int)serverId);
            }
            if (server.Id == 0)
            {
                if (!HttpContext.User.IsInRole("Admin"))
                {
                    return(Forbid());
                }
            }
            ViewBag.Remove          = false;
            server.HostingAvailable = ApiWithKeyController.ApiKeySet(_configuration);
            server.LiteDbUsers      = (await _userservice.FindAll()).ToList();
            return(View("Server", server));
        }
        public async Task <IActionResult> SaveServer(SshServer server)
        {
            if (!await CheckIfUserHasrights(server.Id))
            {
                return(Forbid());
            }
            var newServer = false;

            if (!ModelState.IsValid)
            {
                return(View("Server", server));
            }

            server.LiteDbUsers = (await _userservice.FindAll()).ToList();
            if (server.SshKeyFileNameForm != null)
            {
                await using var ms = new MemoryStream();
                await server.SshKeyFileNameForm.CopyToAsync(ms);

                var fileBytes = ms.ToArray();
                server.SshKeyFileName = fileBytes;
                // act on the Base64 data
            }

            if (server.SshKeyFileNameRootForHostingForm != null)
            {
                await using var ms = new MemoryStream();
                await server.SshKeyFileNameRootForHostingForm.CopyToAsync(ms);

                var fileBytes = ms.ToArray();
                server.SshKeyFileNameRootForHosting = fileBytes;
                // act on the Base64 data
            }

            server.Owner = (await _userservice.FindAll())
                           .FirstOrDefault(x => x.Id == new ObjectId(server.LiteDbUserId));
            try
            {
                if (server.Id == 0)
                {
                    newServer = true;
                    server.Id = await _service.Insert(server);
                }
                else
                {
                    if (server.SshKeyFileName == null)
                    {
                        var old = await _service.FindOne(server.Id);

                        if (old.SshKeyFileName != null)
                        {
                            server.SshKeyFileName = old.SshKeyFileName;
                        }
                    }
                    await _service.Update(server);
                }
            }
            catch (ValidateException e)
            {
                if (e.FieldName == "" && e.Message.ToLower().Contains("telnet"))
                {
                    ModelState.AddModelError("Password", e.Message);
                }
                else if (e.FieldName == "" && e.Message.ToLower().Contains("ssh"))
                {
                    ModelState.AddModelError("SshPassword", e.Message);
                }
                else if (e.FieldName == "")
                {
                    ModelState.AddModelError("Id", e.Message);
                }
                else
                {
                    ModelState.AddModelError(e.FieldName, e.Message);
                }
            }


            if (ModelState.ErrorCount > 0)
            {
                if (newServer)
                {
                    return(await EditServer(server));
                }
                return(await EditServer(server));
            }


            if (newServer)
            {
                return(await Index());
            }

            return(await Index());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="server"></param>
        /// <param name="reservedFor"></param>
        /// <exception cref="CommandExceptionCreateServerDuplicate"></exception>

        public async Task CreatePavlovServer(PavlovServerViewModel server, string reservedFor = "")
        {
            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Start creting server", LogEventLevel.Verbose,
                                                            _notifyService);
            //Check stuff
            var exist = RconStatic.DoesPathExist(server, server.ServerFolderPath, _notifyService);

            if (exist)
            {
                throw new CommandExceptionCreateServerDuplicate("ServerFolderPath already exist!");
            }

            exist = RconStatic.DoesPathExist(server,
                                             "/etc/systemd/system/" + server.ServerSystemdServiceName + ".service", _notifyService);
            if (exist)
            {
                throw new CommandExceptionCreateServerDuplicate("Systemd Service already exist!");
            }

            var portsUsed = (await FindAll()).Where(x => x.SshServer.Id == server.SshServer.Id)
                            .FirstOrDefault(x => x.ServerPort == server.ServerPort || x.TelnetPort == server.TelnetPort);

            if (portsUsed != null)
            {
                if (portsUsed.ServerPort == server.ServerPort)
                {
                    throw new CommandExceptionCreateServerDuplicate("The server port is already used!");
                }

                if (portsUsed.TelnetPort == server.TelnetPort)
                {
                    throw new CommandExceptionCreateServerDuplicate("The telnet port is already used!");
                }
            }


            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Start Install pavlovserver", LogEventLevel.Verbose,
                                                            _notifyService);

            DataBaseLogger.LogToDatabaseAndResultPlusNotify(
                "Username used befor changed to root: " + server.SshServer.SshUsername, LogEventLevel.Verbose,
                _notifyService);

            await RconStatic.UpdateInstallPavlovServer(server, this);


            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Start Install pavlovserver service",
                                                            LogEventLevel.Verbose, _notifyService);

            var oldSSHcrid = new SshServer
            {
                SshPassphrase  = server.SshServer.SshPassphrase,
                SshUsername    = server.SshServer.SshUsername,
                SshPassword    = server.SshServer.SshPassword,
                SshKeyFileName = server.SshServer.SshKeyFileName
            };

            server.SshServer.SshPassphrase      = server.SshPassphraseRoot;
            server.SshServer.SshUsername        = server.SshUsernameRoot;
            server.SshServer.SshPassword        = server.SshPasswordRoot;
            server.SshServer.SshKeyFileName     = server.SshKeyFileNameRoot;
            server.SshServer.NotRootSshUsername = oldSSHcrid.SshUsername;

            try
            {
                await RconStatic.InstallPavlovServerService(server, _notifyService);
            }
            catch (CommandException e)
            {
                //If crash inside here the user login is still root. If the root login is bad this will fail to remove the server afterwards
                OverwrideTheNormalSSHLoginData(server, oldSSHcrid);
                DataBaseLogger.LogToDatabaseAndResultPlusNotify(
                    "Could not install service while creating the pavlov server -> " + e.Message, LogEventLevel.Verbose, _notifyService);
                throw;
            }
            OverwrideTheNormalSSHLoginData(server, oldSSHcrid);
            DataBaseLogger.LogToDatabaseAndResultPlusNotify(
                "Username used after override old infos: " + server.SshServer.SshUsername, LogEventLevel.Verbose,
                _notifyService);
            //start server and stop server to get Saved folder etc.

            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Start after install", LogEventLevel.Verbose,
                                                            _notifyService);

            await RconStatic.SystemDStart(server, this);

            DataBaseLogger.LogToDatabaseAndResultPlusNotify("stop after install", LogEventLevel.Verbose,
                                                            _notifyService);

            await RconStatic.SystemDStop(server, this);

            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Try to save game ini", LogEventLevel.Verbose,
                                                            _notifyService);



            var pavlovServerGameIni = new PavlovServerGameIni();

            DataBaseLogger.LogToDatabaseAndResultPlusNotify("created Ini", LogEventLevel.Verbose, _notifyService);
            var selectedMaps = await _serverSelectedMapService.FindAllFrom(server);

            DataBaseLogger.LogToDatabaseAndResultPlusNotify("found maps", LogEventLevel.Verbose, _notifyService);
            pavlovServerGameIni.ServerName = server.Name;


            pavlovServerGameIni.SaveToFile(server, selectedMaps, _notifyService);

            //also create rcon settings


            DataBaseLogger.LogToDatabaseAndResultPlusNotify("write rcon file", LogEventLevel.Verbose,
                                                            _notifyService);

            var lines = new List <string>
            {
                "Password="******"Port=" + server.TelnetPort
            };

            RconStatic.WriteFile(server.SshServer, server.ServerFolderPath + FilePaths.RconSettings,
                                 lines.ToArray(), _notifyService);
        }
        public async Task RemovePavlovServerFromDisk(
            PavlovServerViewModel server, bool ignoreMostExceptions)
        {
            //Todo AuthError??
            DataBaseLogger.LogToDatabaseAndResultPlusNotify("Start remove server!", LogEventLevel.Verbose,
                                                            _notifyService);
            string result = "";

            //start server and stop server to get Saved folder etc.
            if (ignoreMostExceptions)
            {
                try
                {
                    await RconStatic.SystemDStop(server, _pavlovServerService);
                }
                catch (CommandException)
                {
                    //ignore
                }
            }
            else
            {
                await RconStatic.SystemDStop(server, _pavlovServerService);
            }

            if (ignoreMostExceptions)
            {
                try
                {
                    await RconStatic.RemovePath(server, server.ServerFolderPath, _pavlovServerService);
                }
                catch (CommandException)
                {
                    //ignore
                }
            }
            else
            {
                await RconStatic.RemovePath(server, server.ServerFolderPath, _pavlovServerService);
            }


            server.SshServer = await FindOne(server.sshServerId);

            if (server.SshServer == null)
            {
                throw new CommandException("Could not get the sshServer!");
            }
            var oldSSHcrid = new SshServer
            {
                SshPassphrase  = server.SshServer.SshPassphrase,
                SshUsername    = server.SshServer.SshUsername,
                SshPassword    = server.SshServer.SshPassword,
                SshKeyFileName = server.SshServer.SshKeyFileName
            };

            server.SshServer.SshPassphrase = server.SshPassphraseRoot;
            server.SshServer.SshUsername   = server.SshUsernameRoot;
            server.SshServer.SshPassword   = server.SshPasswordRoot;
            if (server.SshKeyFileNameForm != null)
            {
                await using var ms = new MemoryStream();
                await server.SshKeyFileNameForm.CopyToAsync(ms);

                var fileBytes = ms.ToArray();
                server.SshKeyFileNameRoot = fileBytes;
                // act on the Base64 data
            }
            server.SshServer.SshKeyFileName     = server.SshKeyFileNameRoot;
            server.SshServer.NotRootSshUsername = oldSSHcrid.SshUsername;


            if (ignoreMostExceptions)
            {
                try
                {
                    await RconStatic.RemovePath(server,
                                                "/etc/systemd/system/" + server.ServerSystemdServiceName + ".service", _pavlovServerService);
                }
                catch (CommandException)
                {
                    //ignore
                }
            }
            else
            {
                await RconStatic.RemovePath(server,
                                            "/etc/systemd/system/" + server.ServerSystemdServiceName + ".service", _pavlovServerService);
            }

            //Remove the server from the sudoers file
            var sudoersPathParent = "/etc/sudoers.d";
            var sudoersPath       = sudoersPathParent + "/pavlovRconWebserverManagement";
            var removed           = true;


            if (ignoreMostExceptions)
            {
                try
                {
                    removed = RconStatic.RemoveServerLineToSudoersFile(server, _notifyService, sudoersPath, _pavlovServerService);
                }
                catch (CommandException)
                {
                    //ignore
                }
            }
            else
            {
                removed = RconStatic.RemoveServerLineToSudoersFile(server, _notifyService, sudoersPath, _pavlovServerService);
            }
            if (removed)
            {
                DataBaseLogger.LogToDatabaseAndResultPlusNotify("server line removed from sudoers file!",
                                                                LogEventLevel.Verbose, _notifyService);
            }
            else
            {
                //means that the lines still is in the file!!!
                var error =
                    "Could not remove the server line from sudoers file!";
                DataBaseLogger.LogToDatabaseAndResultPlusNotify(error, LogEventLevel.Fatal, _notifyService);
                if (!ignoreMostExceptions)
                {
                    throw new CommandException(error);
                }
            }

            //Handle the presets an newer systemd
            if (ignoreMostExceptions)
            {
                try
                {
                    RconStatic.AddLineToNewerSystemDsIfNeeded(server, _notifyService, true);
                }
                catch (CommandException)
                {
                    //ignore
                }
            }
            else
            {
                RconStatic.AddLineToNewerSystemDsIfNeeded(server, _notifyService, true);
            }



            DataBaseLogger.LogToDatabaseAndResultPlusNotify(result, LogEventLevel.Verbose, _notifyService);
        }
 private PavlovServerViewModel OverwrideTheNormalSSHLoginData(PavlovServerViewModel server, SshServer oldSSHcrid)
 {
     server.SshServer.SshPassphrase  = oldSSHcrid.SshPassphrase;
     server.SshServer.SshUsername    = oldSSHcrid.SshUsername;
     server.SshServer.SshPassword    = oldSSHcrid.SshPassword;
     server.SshServer.SshKeyFileName = oldSSHcrid.SshKeyFileName;
     return(server);
 }