39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using Gtk;
|
|
using Avahi.UI;
|
|
|
|
public class EntryPoint {
|
|
public static void Main () {
|
|
Application.Init ();
|
|
|
|
ServiceDialog dialog = new ServiceDialog ("Choose SSH Server", null,
|
|
Stock.Cancel, ResponseType.Cancel,
|
|
Stock.Connect, ResponseType.Accept);
|
|
dialog.BrowseServiceTypes = new string[] { "_ssh._tcp" };
|
|
dialog.ResolveServiceEnabled = true;
|
|
|
|
if (dialog.Run () == (int) ResponseType.Accept) {
|
|
Console.WriteLine ("Connecting to {0}:{1}", dialog.Address, dialog.Port);
|
|
|
|
string user = Environment.UserName;
|
|
|
|
foreach (byte[] txtBytes in dialog.TxtData) {
|
|
string txt = System.Text.Encoding.UTF8.GetString (txtBytes);
|
|
string[] splitTxt = txt.Split(new char[] { '=' }, 2);
|
|
|
|
if (splitTxt.Length != 2)
|
|
continue;
|
|
|
|
if (splitTxt[0] == "u") {
|
|
user = splitTxt[1];
|
|
}
|
|
|
|
string args = String.Format ("gnome-terminal -t {0} -x ssh -p {1} -l {2} {3}",
|
|
dialog.HostName, dialog.Port, user, dialog.Address.ToString ());
|
|
Console.WriteLine ("Launching: " + args);
|
|
Process.Start (args);
|
|
}
|
|
}
|
|
}
|
|
}
|