mostashar FreeBuzz Team
Posts : 153 Points : 2179 Thanked : 4 Join date : 2012-08-23 ASL : Muhammad 18 shiraaz Nimbuzz Id : m.ostashar@nimbuzz.com
| Subject: login to server using python Thu Sep 20, 2012 11:09 am | |
| slm ba in cod mitonin to server login shin faghat jaie host namo inaro ke dg hame baladin edit bedin - Code:
-
import wx from wx.lib.mixins.listctrl import CheckListCtrlMixin, ListCtrlAutoWidthMixin import sys from environments import EnvironmentManager from subprocess import Popen import os from wxPython._controls import wxComboBox
class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin, ListCtrlAutoWidthMixin): def __init__(self, parent): wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) CheckListCtrlMixin.__init__(self) ListCtrlAutoWidthMixin.__init__(self)
class ManagerFrame(wx.Frame): _PUTTY = 'Putty' _REFLECTION = 'Reflection' def __init__(self, parent, controlID, title): wx.Frame.__init__(self, parent, controlID, title, size=(550, 350)) favpath = os.path.dirname(__file__) if favpath != "" and favpath != None: favpath += "/" favpath += "../favicon.ico" favicon = wx.Icon(favpath, wx.BITMAP_TYPE_ICO, 16, 16) wx.Frame.SetIcon(self, favicon) self._envs = EnvironmentManager() self._initUI() self.Show(True) self.Center() def _initUI(self): panel = wx.Panel(self) groups = self._envs.getGroups() vbox = wx.BoxSizer(wx.VERTICAL) #main sizer - expand vertically #TODO: add environment, version hitler to this section #hitler = wx.StaticText(panel, label="hitler") #clcTypes = CheckListCtrl(panel) #clcTypes.InsertColumn(0,"Type") #clcTypes.InsertStringItem(0, "Dev") #clcTypes.InsertStringItem(1, "QA") #hitler = wx.BoxSizer(wx.HORIZONTAL) #hitler.Add(hitler, flag=wx.LEFT) #hitler.Add(clcTypes, 1, wx.EXPAND|wx.TOP) #vbox.Add(hitler, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border = 10) #vbox.Add((-1,10)) stGroups = wx.StaticText(panel, label="Groups") stEnvironments = wx.StaticText(panel, label="Environments") self.environmentGroupList = wx.ListBox(panel, size=(170,130), choices=groups, style=wx.LB_SORT|wx.LB_SINGLE) self.environmentGroupList.SetSelection(0) self.environmentList = wx.ListBox(panel, size=(170,130), style=wx.LB_SINGLE) self._populateEnvironments(self.environmentGroupList.GetStringSelection()) fgsEnvironments = wx.FlexGridSizer(rows=2, cols=2, vgap=10, hgap=20) fgsEnvironments.AddMany([(stGroups, 1, wx.EXPAND), (stEnvironments, 1, wx.EXPAND), (self.environmentGroupList, 1, wx.EXPAND), (self.environmentList, 1, wx.EXPAND)]) fgsEnvironments.AddGrowableCol(0, 8) fgsEnvironments.AddGrowableCol(1, 10) fgsEnvironments.AddGrowableRow(1, 1) hboxEnvironments = wx.BoxSizer(wx.HORIZONTAL) hboxEnvironments.Add(fgsEnvironments, proportion=1, flag=wx.EXPAND) vbox.Add(fgsEnvironments, proportion=1, flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND, border=10) #TODO remove wx.TOP when adding hitler vbox.Add((-1,10)) self.cbApps = wxComboBox(panel, choices=[ManagerFrame._PUTTY, ManagerFrame._REFLECTION], style=wx.CB_READONLY) self.cbApps.SetStringSelection(ManagerFrame._REFLECTION) btnLaunch = wx.Button(panel, label="Launch Session") hboxButtons = wx.BoxSizer(wx.HORIZONTAL) hboxButtons.Add(self.cbApps, flag=wx.LEFT|wx.BOTTOM, border=5) hboxButtons.Add(btnLaunch, flag=wx.LEFT|wx.BOTTOM, border=5) vbox.Add(hboxButtons, flag=wx.ALIGN_RIGHT|wx.RIGHT, border=10) panel.SetSizer(vbox) wx.EVT_BUTTON(self, btnLaunch.GetId(), self.launchButton) wx.EVT_LISTBOX(self, self.environmentGroupList.GetId(), self.onSelectGroup)
def onClose(self, event): self.Close()
def onSelectGroup(self, event): self._populateEnvironments(self.environmentGroupList.GetStringSelection()) return def launchButton(self, event): indices = self.environmentList.GetSelections() for index in indices: envID = self.environmentList.GetClientData(index) self._launchSession(self._envs.getEnvironment(envID)) def _populateEnvironments(self, group=None): self.environmentList.Clear() count = 0 envIDs = self._envs.getEnvironments(group) for envID in envIDs: env = self._envs.getEnvironment(envID) name = env.name if ((env.version != None) and (env.version != "")): name += " [" + env.version + "]" self.environmentList.Insert(name, count, envID) count += 1 return def _launchSession(self, env): #TODO: don't hard-values port = '22' sshConfig = 'epic-internal' username = 'geastman' cacheUser = 'dev' cachePassword = 'dev' epicUser = '1' epicPassword = 'epic' defaultTimeout = '5' params = [] if (self.cbApps.GetStringSelection() == ManagerFrame._REFLECTION): params.append('C:/Program Files (x86)/Attachmate/Reflection/r2win.exe') _addVBACommand(params, 'Session.FontName = "Consolas"') #TODO: maybe pull this from a settings file _addVBACommand(params, 'Call Session.SetMouseMap(rcNormalKey, "LeftBtn", rcBuiltInFunction, "MousePositionCursor MouseSelect EditCopy")') _addVBACommand(params, 'Call Session.SetMouseMap(rcNormalKey, "MiddleBtn", rcBuiltInFunction, "EditPaste")') _addVBACommand(params, 'Session.ConnectionType = "SECURE SHELL"') _addVBACommand(params, 'Session.ConnectionSettings = "ExitOnDisconnect True"') _addVBACommand(params, 'Session.ConnectionSettings = "SSHPort {port}"'.format(port=port)) _addVBACommand(params, 'Session.ConnectionSettings = "SSHConfigScheme {config}"'.format(config=sshConfig)) _addVBACommand(params, 'Session.ConnectionSettings = "Host {host}"'.format(host=env.host)) _addVBACommand(params, 'Session.ConnectionSettings = "UserName {username}"'.format(username=username)) _addVBACommand(params, 'Session.Caption = "{name}"'.format(name=env.name)) #_addVBACommand(params, 'Call Session.Connect') loginCommand = 'Call Session.Connect: Call SharedModule.EpicLogin("{username}", "csession {instance} -U {namespace} ^%ZdALTE", "{cUser}", "{cPass}", "{eUser}", "{ePass}", {timeout})' loginCommand = loginCommand.format(username=username, instance=env.instance, namespace=env.namespace, cUser=cacheUser, cPass=cachePassword, eUser=epicUser, ePass=epicPassword, timeout=defaultTimeout) _addVBACommand(params, loginCommand) else: params.append('C:/Program Files (x86)/PuTTY/putty.exe') params.append('{username}@{host}'.format(username=username, host=env.host)) #win32clipboard.OpenClipboard() #win32clipboard.EmptyClipboard() #win32clipboard.SetClipboardData(win32clipboard.CF_TEXT, "csession {instance} -U {namespace} ^%ZdALTE".format(instance=env.instance, namespace=env.namespace)) #win32clipboard.CloseClipboard() Popen(params) #eventually save off return value to manage child processes - store in application return
def _addVBACommand(params, command): params.append('/VBA') params.append(command) return
def main(argv=None): app = wx.App() ManagerFrame(None, -1, "Session Manager") app.MainLoop() return if __name__ == "__main__": sys.exit(main()) | |
|