def __init__(self, parent, guiaction=None, pack_info=None):
    self.guiaction = guiaction
    if(not pack_info):
        self.pack_info=rcm_utils.pack_info()
    else:
        self.pack_info=pack_info 
    self.parent = parent
    self.top = Toplevel(self.parent)
    geometry = '+' + str(self.parent.winfo_x()) + '+' + str(self.parent.winfo_y())
    self.top.geometry(geometry)
    self.my_rcm_client = rcm_client.rcm_client_connection(pack_info = self.pack_info)
    parent.connections.append(self.my_rcm_client)
    self.topFrame= Frame(self.top)
    self.topFrame.pack(fill=BOTH,expand=1)
    self.frameLogin = Login(guiaction=self.ok, action=self.my_rcm_client.login_setup, master=self.topFrame)
    self.top.grab_set()
    def askopenfilename(self,filename=None):
        if(not filename):
            file_opt = options = {}
            options['filetypes'] = [('vnc files', '.vnc'), ('all files', '.*')]
            filename = tkFileDialog.askopenfilename(initialdir=self.last_used_dir,**file_opt)

        if filename:
            tunnel = False
            my_rcm_client = rcm_client.rcm_client_connection(pack_info = self.pack_info)
            my_rcm_client.passwd = ''

            #check if session needs tunneling
            file = open(filename, 'r')
            if 'rcm_tunnel' in file.read():
                file.seek(0)
                lines = file.readlines()
                for l in lines:
                    if 'rcm_tunnel' in l:
                        node = l.split('=')[1].rstrip()
                        #check credential for the cluster, not for the specific node
                        if(self.n):
                            credential = self.n.getConnectionInfo(node.split('.',1)[1])
                            if credential != None:
                                user = credential['user']
                                my_rcm_client.login_setup(host=node,remoteuser=user,password=credential['password'])
                            else:
                                tkMessageBox.showwarning("Warning!", "Please login to \"{0}\" to open this shared display.".format(node))
                                return
                        else:
                            module_logger.error("connections with tunnel need to be in GUI mode with a proper connection to login node")
                            return
                        
                    if 'host' in l:
                        hostname = l.split('=')[1].rstrip()
                    if 'port' in l:
                        port = l.split('=')[1].rstrip()
                        display = int(port) - 5900
                    if 'password' in l:
                        password = l.split('=')[1].rstrip()

                c=rcm.rcm_session(node=hostname, tunnel='y', display=display, nodelogin=node, username=user, vncpassword=password)
                my_rcm_client.vncsession(session = c)
            else:
                my_rcm_client.vncsession(configFile = filename)
            self.topFrame.connections.append(my_rcm_client)
            self.last_used_dir=os.path.dirname(filename)
示例#3
0
 def __init__(self, parent, guiaction=None, pack_info=None):
     self.guiaction = guiaction
     if (not pack_info):
         self.pack_info = rcm_utils.pack_info()
     else:
         self.pack_info = pack_info
     self.parent = parent
     self.top = Toplevel(self.parent)
     geometry = '+' + str(self.parent.winfo_x()) + '+' + str(
         self.parent.winfo_y())
     self.top.geometry(geometry)
     self.my_rcm_client = rcm_client.rcm_client_connection(
         pack_info=self.pack_info)
     parent.connections.append(self.my_rcm_client)
     self.topFrame = Frame(self.top)
     self.topFrame.pack(fill=BOTH, expand=1)
     self.frameLogin = Login(guiaction=self.ok,
                             action=self.my_rcm_client.login_setup,
                             master=self.topFrame)
     self.top.grab_set()
示例#4
0
    def askopenfilename(self, filename=None):
        if (not filename):
            file_opt = options = {}
            options['filetypes'] = [('vnc files', '.vnc'), ('all files', '.*')]
            filename = tkFileDialog.askopenfilename(
                initialdir=self.last_used_dir, **file_opt)

        if filename:
            tunnel = False
            my_rcm_client = rcm_client.rcm_client_connection(
                pack_info=self.pack_info)
            my_rcm_client.passwd = ''

            #check if session needs tunneling
            file = open(filename, 'r')
            if 'rcm_tunnel' in file.read():
                file.seek(0)
                lines = file.readlines()
                for l in lines:
                    if 'rcm_tunnel' in l:
                        node = l.split('=')[1].rstrip()
                        #check credential for the cluster, not for the specific node
                        if (self.n):
                            credential = self.n.getConnectionInfo(
                                node.split('.', 1)[1])
                            if credential != None:
                                user = credential['user']
                                my_rcm_client.login_setup(
                                    host=node,
                                    remoteuser=user,
                                    password=credential['password'])
                            else:
                                tkMessageBox.showwarning(
                                    "Warning!",
                                    "Please login to \"{0}\" to open this shared display."
                                    .format(node))
                                return
                        else:
                            module_logger.error(
                                "connections with tunnel need to be in GUI mode with a proper connection to login node"
                            )
                            return

                    if 'host' in l:
                        hostname = l.split('=')[1].rstrip()
                    if 'port' in l:
                        port = l.split('=')[1].rstrip()
                        display = int(port) - 5900
                    if 'password' in l:
                        password = l.split('=')[1].rstrip()

                c = rcm.rcm_session(node=hostname,
                                    tunnel='y',
                                    display=display,
                                    nodelogin=node,
                                    username=user,
                                    vncpassword=password)
                my_rcm_client.vncsession(session=c)
            else:
                my_rcm_client.vncsession(configFile=filename)
            self.topFrame.connections.append(my_rcm_client)
            self.last_used_dir = os.path.dirname(filename)