diff options
Diffstat (limited to 'avahi-ui-sharp/bssh.cs')
| -rw-r--r-- | avahi-ui-sharp/bssh.cs | 39 | 
1 files changed, 39 insertions, 0 deletions
diff --git a/avahi-ui-sharp/bssh.cs b/avahi-ui-sharp/bssh.cs new file mode 100644 index 0000000..003a3a6 --- /dev/null +++ b/avahi-ui-sharp/bssh.cs @@ -0,0 +1,39 @@ +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); +            } +        } +    } +}  | 
