summaryrefslogtreecommitdiffstats
path: root/actions/services/_ssh_tcp.py
diff options
context:
space:
mode:
Diffstat (limited to 'actions/services/_ssh_tcp.py')
-rw-r--r--actions/services/_ssh_tcp.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/actions/services/_ssh_tcp.py b/actions/services/_ssh_tcp.py
new file mode 100644
index 0000000..1465275
--- /dev/null
+++ b/actions/services/_ssh_tcp.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+import os
+import pwd
+
+def enter_callback(widget, win):
+ win.destroy()
+
+def SshLogin(hostname, username = None):
+ global win
+ win = gtk.Dialog("Ssh Connection", None,
+ gtk.DIALOG_MODAL,
+ (gtk.STOCK_OK, gtk.RESPONSE_OK))
+
+ vbox = gtk.VBox(False, 5)
+ win.vbox.pack_start(vbox, True, True, 0)
+ vbox.set_border_width(5)
+
+ label = gtk.Label()
+ label.set_markup("Connecting to <b>%s</b>.\nPlease enter your <b>login</b>:" % (hostname))
+
+ vbox.pack_start(label, False, False, 0)
+
+ # Create our entry
+ entry = gtk.Entry()
+ if username!= None:
+ entry.set_text(username)
+ entry.connect("activate", enter_callback, win)
+ vbox.pack_start(entry, False, False, 0)
+
+ # Create the completion object
+ completion = gtk.EntryCompletion()
+
+ # Assign the completion to the entry
+ entry.set_completion(completion)
+
+ # Create a tree model and use it as the completion model
+ completion_model = __create_completion_model()
+ completion.set_model(completion_model)
+
+ # Use model column 0 as the text column
+ completion.set_text_column(0)
+
+ win.show_all()
+ win.run()
+ return entry.get_text()
+
+def __create_completion_model():
+ ''' Creates a tree model containing the completions.
+ '''
+ store = gtk.ListStore(str)
+
+ iter = store.append()
+ store.set(iter, 0, "root")
+
+ current_user = pwd.getpwuid(os.getuid())[0]
+ iter = store.append()
+ store.set(iter, 0, current_user)
+
+ return store
+
+def _ssh_tcp(name, hostname, address, port, txts):
+
+ if txts.has_key("u"):
+ username = SshLogin(name, txts["u"])
+ else:
+ username = SshLogin(name)
+
+ if username != "":
+ sshline = "ssh -l %s -p %i %s" % (username, port, address)
+ else:
+ sshline = "ssh -p %i %s" % (port, address)
+
+ cmdline = []
+ cmdline.append("gnome-terminal")
+ cmdline.append("--tab")
+ cmdline.append("-t %s" % name)
+ cmdline.append("-e %s" % sshline)
+ pid = subprocess.Popen(cmdline).pid
+
+if __name__ == '__main__':
+# res = SshLogin("localhost", "robert")
+# print res
+ _ssh_tcp(name, hostname, address, port, txts)