]> git.meshlink.io Git - catta/blobdiff - avahi-ui-sharp/zssh.cs
add avahi-ui-sharp
[catta] / avahi-ui-sharp / zssh.cs
diff --git a/avahi-ui-sharp/zssh.cs b/avahi-ui-sharp/zssh.cs
new file mode 100644 (file)
index 0000000..ad45ca9
--- /dev/null
@@ -0,0 +1,37 @@
+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.Close, ResponseType.Cancel);
+       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);
+            }
+        }
+    }
+}