Exemple #1
0
        public async Task <IActionResult> StopAndTakeAwayOnPromise(string apiKey, int sshServerId)
        {
            if (!HasAccess(apiKey))
            {
                return(BadRequest("No AuthKey set or wrong auth key!"));
            }
            var sshServer = await _sshServerSerivce.FindOne(sshServerId);

            if (sshServer == null)
            {
                return(BadRequest("The ssh server does not exist!"));
            }
            sshServer.OldOwner = sshServer.Owner;
            sshServer.Owner    = null;
            await _sshServerSerivce.Update(sshServer);

            return(Ok());
        }
        public void Update()
        {
            // arrange
            var sshServer  = SshServerInsert(_sshServerSerivce);
            var sshServers = _sshServerSerivce.FindAll().GetAwaiter().GetResult();

            sshServer.Should().NotBeNull();
            // act
            sshServer.Name          = "UpdateTest";
            sshServer.SshPassword   = "";
            sshServer.SshPassphrase = "";
            var sshServerResult = _sshServerSerivce.Update(sshServer, false).GetAwaiter().GetResult();
            // assert

            var sshServersAfterUpdate = _sshServerSerivce.FindAll().GetAwaiter().GetResult();
            var sshServerAfterUpdate  = sshServersAfterUpdate.FirstOrDefault();

            sshServerAfterUpdate.Should().NotBeNull();
            sshServerAfterUpdate.Name.Should().Be("UpdateTest");
            sshServerResult.Should().BeTrue();
        }
        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());
        }