Пример #1
0
        public void InstallMirrorRegistry(SshConnection connection)
        {
            var mirrorPort = 4999;
            // Mirror runs on port 4999
            var mirrorDir = "/home/test/mirror";
            var cmd       = sshClient.Connect(connection).Command($"mkdir {mirrorDir}");

            cmd = sshClient.Command(
                $"docker run -p {mirrorPort}:5000 -d --restart=always --name registry "
                + $"-e REGISTRY_PROXY_REMOTEURL=http://registry-1.docker.io "
                + $"-v {mirrorDir}:/var/lib/registry "
                + $"registry:2"
                );

            var daemonjson = String.Join("\n", new string[]   {
                "{",
                @"    ""registry-mirrors"" : [""http://*****:*****@"""]",
                "}"
            });
            var cmdLine = $"echo '{daemonjson}' > /etc/docker/daemon.json";

            sshClient.SudoBash(cmdLine);

            sshClient.SudoReboot();
        }
Пример #2
0
 public CiExeCommands Configure(SshConnection connection, Uri vaultUri, string vaultToken)
 {
     this.connection = connection;
     this.vaultToken = vaultToken;
     this.vaultUri   = vaultUri;
     return(this);
 }
Пример #3
0
        private async Task tryConnect()
        {
            await Task.Run(() =>
            {
                isLogging = true;

                //checking adress is neceserry because is faster than try to connect to bad IP
                using (var ping = new Ping())
                {
                    if (ping.Send(ipEditText.Text).Status != IPStatus.Success)
                    {
                        isLogging = false;
                        throw new Exception("Host is unreachable");
                    }
                }

                try
                {
                    SshConnection.Connect(ipEditText.Text, "root", passwordEditText.Text);
                }
                catch (Exception ex)
                {
                    isLogging = false;
                    throw new Exception($"Can not connect to router. {ex.Message}");
                }

                isLogging = false;

                StartActivity(typeof(MenuActivity));
            });
        }
Пример #4
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SshConnection.Disconnect();

            SetContentView(Resource.Layout.Logout);

            findViewsWith();
            bindData();
            handleEvents();
        }
Пример #5
0
        public void InstallDotNetCoreSdk(SshConnection connection)
        {
            sshClient.Connect(connection);
            sshClient.Command("curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg");
            sshClient.SudoBash("mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg");
            sshClient.SudoBash("sh -c 'echo \"deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main\" > /etc/apt/sources.list.d/dotnetdev.list'");

            sshClient.SudoBash("sudo apt-get -qq --yes install apt-transport-https");
            sshClient.SudoBash("sudo apt-get -qq update");
            sshClient.SudoBash("sudo apt-get -qq --yes install dotnet-sdk-2.1.4");
        }
Пример #6
0
        private void setDefaultValues()
        {
            var wirelessConfiguration = SshConnection.Get_Wireless();

            ssidEditText.Text = wirelessConfiguration.Ssid;
            keyEditText.Text  = wirelessConfiguration.Key;
            encryptionSpinner.SetSelection((int)(Encryption)Enum.Parse(typeof(Encryption), wirelessConfiguration.Encryption.ToLower()));
            channelSpinner.SetSelection(Convert.ToInt32(wirelessConfiguration.Channel) - 1);
            modeSpinner.SetSelection((int)(Mode)Enum.Parse(typeof(Mode), wirelessConfiguration.Mode.ToLower()));
            networkSpinner.SetSelection((int)(Network)Enum.Parse(typeof(Network), wirelessConfiguration.Network.ToLower()));
            disabledCheckbox.Enabled = wirelessConfiguration.Disabled;
        }
Пример #7
0
        private void bindData()
        {
            var wirelessConfiguration = SshConnection.Get_Wireless();

            ssidTextView.Text       = wirelessConfiguration.Ssid;
            keyTextView.Text        = wirelessConfiguration.Key;
            encryptionTextView.Text = wirelessConfiguration.Encryption;
            channelTextView.Text    = wirelessConfiguration.Channel;
            modeTextView.Text       = wirelessConfiguration.Mode;
            networkTextView.Text    = wirelessConfiguration.Network;

            disabledTextView.Text = wirelessConfiguration.Disabled ? "true" : "false";
        }
Пример #8
0
        private void ExCmd()
        {
            string cmd = SshConnection.ExecBashCommand(textBox_cmd.Text);

            if (cmd == null)
            {
                textBox_text.AppendText("Error executing command!" + Environment.NewLine);
            }
            else
            {
                cmd = Regex.Replace(cmd, "\n\r", "\n");
                cmd = Regex.Replace(cmd, "\n", Environment.NewLine);
                textBox_text.AppendText(Environment.NewLine + "[" + SshConnection.sshexec.Username + "@" + SshConnection.sshexec.Host + "]: " + textBox_cmd.Text + Environment.NewLine + cmd + Environment.NewLine);
            }
        }
Пример #9
0
        public VmMock GetVmMockBySshConnection(SshConnection connection)
        {
            var found = Vms.FirstOrDefault(vm => vm.SshUri.ToString() == connection.SshUri.ToString());

            if (found == null)
            {
                throw new Exception("VmMock not found by Uri");
            }

            if (connection.User != found.AdminUser || connection.Password != found.AdminPassword)
            {
                throw new Exception("Ssh Bad username / password");
            }

            return(found);
        }
        public string GetFirstSSH()
        {
            //FileLists fil_lst = new FileLists();
            string return_value = null;

            SshConnection.sshexec.Password = SshSettings.pwd;
            //изменитьToolStripMenuItem.Enabled = false;
            ////TODO Соединение с сервером, получение списка файлов
            try
            {
                listBox_log.Items.Add("Connecting...");
                Application.DoEvents();
                if (!SshConnection.sshexec.Connected)
                {
                    SshConnection.sshexec.Connect();
                }
                Application.DoEvents();
                listBox_log.Items.Add("Connected");

                string first_cmd = SshConnection.ExecBashCommand("ls -la");
                first_cmd = Regex.Replace(first_cmd, "\n\r", "\n");
                first_cmd = Regex.Replace(first_cmd, "\n", Environment.NewLine);

                return_value = "Server version:  " + SshConnection.sshexec.ServerVersion + Environment.NewLine +
                               "Chiper algorytm: " + SshConnection.sshexec.Cipher + Environment.NewLine + first_cmd;

                listBox_log.Items.Add("Disconnecting...");
                //FileLists.sshexec.Close();
                listBox_log.Items.Add("OK");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Проверьте настройки подключения" + Environment.NewLine + "Произошла ошибка: " + ex.Message);
                //изменитьToolStripMenuItem.Enabled = true;
                listBox_log.Items.Add("ERROR");
                return_value = null;
            }
            finally
            {
                if (return_value != null)
                {
                    this.Close();
                }
            }

            return(return_value);
        }
Пример #11
0
        public void Create2()
        {
            var host     = "doods.dev";
            var login    = "******";
            var password = "******";
            var port     = 42;
            var obj      = new SshConnection(host, port, login, password);

            Assert.IsNotNull(obj);
            Assert.AreEqual(ConnectionType.Ssh, obj.ConnectionType);
            Assert.AreEqual(port, obj.Port);
            Assert.AreEqual(host, obj.Host);

            Assert.AreEqual(login, obj.Credentials.Login);
            Assert.AreEqual(password, obj.Credentials.Password);
            Assert.AreEqual(AuthenticationType.Simple, obj.Credentials.AuthenticationType);
        }
Пример #12
0
        public void CleanCiImage(SshConnection connection)
        {
            sshClient.Connect(connection);
            var containers = sshClient.Command("docker ps -a");

            if (containers.Contains("ciexe"))
            {
                sshClient.Command("docker rm -f ciexe");
            }

            var images = sshClient.Command("docker images");

            if (images.Contains("ciexe"))
            {
                sshClient.Command("docker image rm -f ciexe");
            }
        }
Пример #13
0
        public void CloneOrPullCiSources(SshConnection connection)
        {
            sshClient.Connect(connection);
            sshClient.SudoBash("sudo apt-get -qq --yes install git");

            var script = @"
            set -e -x
            if [ -d ""${HOME}/ci"" ]; then
                cd ${HOME}/ci
                git pull --quiet
            else
                mkdir ~/ci
                git --git-dir=${HOME}/ci clone --quiet https://github.com/emallard/ci.git
            fi
            ";

            sshClient.Script(script, "InstallCiSources.sh");
        }
Пример #14
0
        private void saveWireless_Click(object sender, EventArgs e)
        {
            var newWirelessConfiguration = new Wireless
            {
                Ssid       = ssidEditText.Text.Replace("\r", ""),
                Key        = keyEditText.Text,
                Encryption = Enum.GetName(typeof(Encryption), encryptionSpinner.SelectedItemId),
                Channel    = (channelSpinner.SelectedItemId + 1).ToString(),
                Mode       = Enum.GetName(typeof(Mode), modeSpinner.SelectedItemId),
                Network    = Enum.GetName(typeof(Network), networkSpinner.SelectedItemId),
                Disabled   = disabledCheckbox.Enabled
            };

            SshConnection.Send_SaveWireless(newWirelessConfiguration);

            Toast.MakeText(this, "New configuration has been saved. Log in again to router.", ToastLength.Short).Show();
            StartActivity(typeof(LoginActivity));
            Finish();
        }
Пример #15
0
 private void FormSettings_Load(object sender, EventArgs e)
 {
     SshConnection.KillSSH();
     //TODO Заглушка: аутентификация только с клавы
     comboBox_use_auth_key.SelectedIndex = 0;
     if (File.Exists(SaveSetting.path_to_set_file))
     {
         SaveSetting.LoadSettings(ref o);
     }
     else
     {
         o.key_fname    = Crypt.default_key;//50;
         o.pwd_file_enc = Crypt.default_key;
         o.key_size     = "256";
         o.server       = "yuor-server.1gb.ru";
         o.base_dir     = "http/";
         o.user         = "******";
         //o.pwd = "password";
         SaveSetting.CreateSettings(o);
     }
     LoadToControls();
 }
        public IOmvService GetOmvService(Host host, ILogger logger, IMapper mapper)
        {
            IRpcClient service;

            if (host.IsSsh)
            {
                var connection = new SshConnection(host.Url, host.Port, host.UserName, host.Password);
                service = GetSsh(logger, connection);
                //SshService
                //var service2 = new SshService(logger, mapper);
                //service2.Init(connection, false);
                //_sshService = service2;
                //_sshServiceProvider.ChangeValue(_sshService);
            }
            else
            {
                var connection = new HttpConnection(host.Url, host.Port);
                service = GetHttp(logger, connection);
            }

            return(new OmvRpcService(service, logger, mapper));
        }
Пример #17
0
        public void CreateVm(string key, string vmName, string rootPassword, string adminuser, string adminpassword)
        {
            var ip          = GetVmIp(key, vmName);
            var portForward = GetVmSshUri(key, vmName).Port;

            CheckClonableVm();
            CheckVmDoesNotExists(vmName);

            // Clone clonableVm
            vBoxHelper.CloneVm(vmDir, clonableVm, vmName);

            // Start vm, it has been cloned from an image that runs on IP 10.0.2.200
            vBoxHelper.StartVm(vmName);
            Thread.Sleep(20000);

            vBoxHelper.NatLocalSshPortForwarding("10.0.2.200", $"{portForward}");
            var connection = new SshConnection()
            {
                SshUri   = new Uri("ssh://127.0.0.1:22200"),
                User     = "******",
                Password = "******"
            };

            sshClient.Connect(connection);
            var command = $"sed 's/10.0.2.200/{ip}/g' /etc/network/interfaces > sed.tmp && cat sed.tmp > /etc/network/interfaces";

            Console.WriteLine(command);
            var cmd = sshClient.Command(command);

            Console.WriteLine("result : " + cmd);


            Console.WriteLine("restart vm");
            vBoxHelper.RestartVm(vmName);
            Thread.Sleep(20000);
            vBoxHelper.NatLocalSshPortForwarding(ip, $"{portForward}");
        }
Пример #18
0
 public ISshClient Connect(SshConnection sshConnection)
 {
     this.sshConnection = sshConnection;
     return(this);
 }
Пример #19
0
 public void CleanCiSources(SshConnection connection)
 {
     sshClient.Connect(connection);
     sshClient.SudoBash("rm -rf ~/ci");
 }
Пример #20
0
 public void BuildCiImage(SshConnection connection)
 {
     sshClient.Connect(connection);
     sshClient.Command("docker build --force-rm -t ciexe ~/ci");
     sshClient.Command("docker image rm $(docker images -f \"dangling=true\" -q)");
 }
Пример #21
0
 private void FormSettings_FormClosed(object sender, FormClosedEventArgs e)
 {
     SshConnection.InitSSH();
 }
Пример #22
0
 public void BuildCiUsingSdk(SshConnection connection)
 {
     sshClient.Connect(connection);
     sshClient.Command("cd ci && dotnet restore && dotnet publish -c Release -o out");
     sshClient.Command("cd ci && docker build --force-rm -f DockerfileLocalBuild -t ciexe ~/ci");
 }
Пример #23
0
 private void toolStripBtnDisconnect_Click(object sender, EventArgs e)
 {
     MySQLConnection.CloseConnections();
     SshConnection.CloseConnections();
     Account.ClearAccounts();
 }