X-Git-Url: http://wagnertech.de/git?p=mcloud.git;a=blobdiff_plain;f=mCloudGui%2FMainWindow.cs;fp=mCloudGui%2FMainWindow.cs;h=ea8a90489c3d2beba27d1522645b1c77b4e255db;hp=0000000000000000000000000000000000000000;hb=a82796d64877d73d6fd2ee86140ee788b16d402e;hpb=fd98c53230d650456bb9f0114a93d17280460809 diff --git a/mCloudGui/MainWindow.cs b/mCloudGui/MainWindow.cs new file mode 100644 index 0000000..ea8a904 --- /dev/null +++ b/mCloudGui/MainWindow.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using Gtk; + +using mCloudAwk; + +namespace mCloudGui { + + public partial class MainWindow: Gtk.Window + { + private const string new_text = "new ..."; + private IMCloudAwk MCA; + + public MainWindow (): base (Gtk.WindowType.Toplevel) + { + Build (); + this.MCA = new MCloudMgr (); + TConnection[] Conns = MCA.GetConnections (); + foreach (var Conn in Conns) { + this.ConnectionSelection.AppendText (Conn.Name); + } + this.ConnectionSelection.AppendText (new_text); + this.ConnectionSelection.Active = 0; + } + + protected void OnDeleteEvent (object sender, DeleteEventArgs a) + { + MCA.Dispose (); + Application.Quit (); + a.RetVal = true; + } + + protected void TestButtonPressed (object sender, EventArgs e) + { + // extract connection name + string connection_name = this.ConnectionSelection.ActiveText; + + // TODO: implement ssh connection test + int r = this.MCA.TestConnection (connection_name); + + if (r == MCloudMgr.SSH_NO_PW || r == MCloudMgr.SSH_WITH_PW) { + // everything fine + } else { + GtkUtil.MessageBox.Show("Keine ssh-Verbindung möglich"); + return; + } + + // if connection is new, add it to configuration + if (connection_name == new_text) { + + // build connection object + connection_name = this.UserField.Text + "@" + this.ServerField.Text; + TConnection C = new TConnection { + Name = connection_name, + User = this.UserField.Text, + Server = this.ServerField.Text, + Password = this.PasswordField.Text + }; + this.MCA.AddConnection (C); + } + + // TODO: check login w/o password + bool login_without_password_possible = false; + + if (!login_without_password_possible) { + + // check existence of public key file + if (!System.IO.File.Exists ("/home/monodev/.ssh/id_dsa.pub")) { + + // TODO: create public key file + using (System.IO.StreamWriter File = new System.IO.StreamWriter ("/home/monodev/.ssh/id_dsa.pub", false)) { + File.WriteLine ("Hallo"); + } + } + // TODO: scp file to target + // TODO: append it to .ssh/authorized_keys + // TODO: test login w/o password again + } + // TODO: next configution step + this.Destroy (); + MCA.Dispose (); + DirectorySelectionWin DirWin = new DirectorySelectionWin (); + DirWin.Show (); + + } + + protected void ConnectionSelectionChanged (object sender, EventArgs e) + { + if (((Gtk.ComboBox)sender).ActiveText.IndexOf ('@') > 0) { + // grey input fields + this.ServerField.Sensitive = false; + this.PasswordField.Sensitive = false; + this.UserField.Sensitive = false; + + // activate delete button + this.DeleteConnectionBtn.Sensitive = true; + } else { + // activate input fields + this.ServerField.Sensitive = true; + this.PasswordField.Sensitive = true; + this.UserField.Sensitive = true; + + // deactivate delete button + this.DeleteConnectionBtn.Sensitive = false; + } + } + + protected void DeleteConnectionPressed (object sender, EventArgs e) + { + string connection = this.ConnectionSelection.ActiveText; + if (this.ConnectionSelection.ActiveText.IndexOf ('@') == -1) + throw new Exception ("Cannot remove default entry"); + int connPos = this.ConnectionSelection.Active; + this.ConnectionSelection.Active = connPos+1; + this.ConnectionSelection.RemoveText (connPos); + this.MCA.DeleteConnection (connection); + } + } +} \ No newline at end of file