Beispiel #1
0
        /// <summary>
        /// Gets a <see cref="SshClientWrapper"/> for which the Connect() method has NOT been called.
        /// </summary>
        public static SshClientWrapper GetUnconnectedSshClientWrapper(this AwsEc2ServerSecrets awsEc2ServerSecrets)
        {
            var connectionInfo = awsEc2ServerSecrets.GetConnectionInfo();

            var clientWrapper = new SshClientWrapper(connectionInfo);

            return(clientWrapper);
        }
Beispiel #2
0
        public static void Initialize()
        {
            // load local version info
            try
            {
                var ver = GetHakchiVersion();
                Trace.WriteLine($"Local hakchi.hmod version info: boot {ver["bootVersion"]}, kernel {ver["kernelVersion"]}, script {ver["hakchiVersion"]}");
                RawLocalBootVersion   = ver["bootVersion"];
                RawLocalKernelVersion = ver["kernelVersion"];
                RawLocalScriptVersion = ver["hakchiVersion"];
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message + ex.StackTrace);
            }

            // just in case Initialize was ever called before
            if (shells.Any())
            {
                if (Connected)
                {
                    Shell_OnDisconnected();
                }
                Shutdown();
                Thread.Sleep(0);
            }

            // placeholder shell
            shells.Add(new UnknownShell());
            Shell = shells.First();

            // clovershell (for legacy compatibility)
            if (!ConfigIni.Instance.DisableClovershellListener)
            {
                var clovershell = new ClovershellConnection()
                {
                    AutoReconnect = true
                };
                clovershell.OnConnected    += Shell_OnConnected;
                clovershell.OnDisconnected += Shell_OnDisconnected;
                shells.Add(clovershell);
                clovershell.Enabled = true;
            }

            // new high-tech but slow SSH connection
            if (!ConfigIni.Instance.DisableSSHListener)
            {
                var ssh = new SshClientWrapper(DNS_NAME, null, 22, USERNAME, PASSWORD)
                {
                    AutoReconnect = true
                };
                ssh.OnConnected    += Shell_OnConnected;
                ssh.OnDisconnected += Shell_OnDisconnected;
                shells.Add(ssh);
                ssh.Enabled = true;
            }
        }
Beispiel #3
0
        public static void Initialize()
        {
            if (shells.Any())
            {
                if (Connected)
                {
                    Shell_OnDisconnected();
                }
                Shutdown();
                Thread.Sleep(0);
            }

            // placeholder shell
            shells.Add(new UnknownShell());
            Shell = shells.First();

            // clovershell (for legacy compatibility)
            if (!ConfigIni.Instance.DisableClovershellListener)
            {
                var clovershell = new ClovershellConnection()
                {
                    AutoReconnect = true
                };
                clovershell.OnConnected    += Shell_OnConnected;
                clovershell.OnDisconnected += Shell_OnDisconnected;
                shells.Add(clovershell);
                clovershell.Enabled = true;
            }

            // new high-tech but slow SSH connection
            if (!ConfigIni.Instance.DisableSSHListener)
            {
                var ssh = new SshClientWrapper(DNS_NAME, null, 22, USERNAME, PASSWORD)
                {
                    AutoReconnect = true
                };
                ssh.OnConnected    += Shell_OnConnected;
                ssh.OnDisconnected += Shell_OnDisconnected;
                shells.Add(ssh);
                ssh.Enabled = true;
            }
        }
Beispiel #4
0
        protected override void Run(SshClientWrapper sshClientWrapper)
        {
            var remoteServiceName = this.RemoteServiceNameProvider.GetRemoteServiceName();

            // Wait initially.
            var numberOfSeconds = 5;

            this.Logger.LogInformation($"Pausing for {numberOfSeconds} seconds to allow website service to start...");

            Thread.Sleep(5 * 1000);

            // Now test whether service is running.
            this.Logger.LogInformation($"Now checking if {remoteServiceName} website service is active...");

            var commandText = $"sudo systemctl status {remoteServiceName}";
            var command     = sshClientWrapper.SshClient.RunCommand(commandText);
            var result      = command.Result;

            using (var stringReader = new StringReader(result))
            {
                stringReader.ReadLine();
                stringReader.ReadLine();

                var activeLine = stringReader.ReadLine();

                var serviceIsActive = activeLine.Contains("active (running)");
                if (serviceIsActive)
                {
                    this.Logger.LogInformation($"Website service {remoteServiceName} is active.");
                }
                else
                {
                    var message = $"Website service is not active!";

                    this.Logger.LogError(message);

                    throw new Exception(message);
                }
            }
        }
Beispiel #5
0
 protected abstract void Run(SshClientWrapper sshClientWrapper);
 public TestApp(SshClientWrapper _)
 {
 }
Beispiel #7
0
        public static SshClientWrapper GetSshClientWrapperUnconnected(this SftpClientWrapper sftpClientWrapper)
        {
            var sshClientWrapper = new SshClientWrapper(sftpClientWrapper.SftpClient.ConnectionInfo);

            return(sshClientWrapper);
        }