prepare for nodes parallel
This commit is contained in:
		| @@ -87,14 +87,20 @@ class configfile: | |||||||
|             return False |             return False | ||||||
|         return result |         return result | ||||||
|  |  | ||||||
|     def getitem(self, unique): |     def getitem(self, unique, keys = None): | ||||||
|             uniques = self._explode_unique(unique) |             uniques = self._explode_unique(unique) | ||||||
|             if unique.startswith("@"): |             if unique.startswith("@"): | ||||||
|                 if uniques.keys() >= {"folder", "subfolder"}: |                 if uniques.keys() >= {"folder", "subfolder"}: | ||||||
|                     folder = self.connections[uniques["folder"]][uniques["subfolder"]] |                     folder = self.connections[uniques["folder"]][uniques["subfolder"]] | ||||||
|                 else: |                 else: | ||||||
|                     folder = self.connections[uniques["folder"]] |                     folder = self.connections[uniques["folder"]] | ||||||
|                 return folder |                 newfolder = folder.copy() | ||||||
|  |                 newfolder.pop("type") | ||||||
|  |                 if keys == None: | ||||||
|  |                     return newfolder | ||||||
|  |                 else: | ||||||
|  |                     f_newfolder = dict((k, newfolder[k]) for k in keys) | ||||||
|  |                     return f_newfolder | ||||||
|             else: |             else: | ||||||
|                 if uniques.keys() >= {"folder", "subfolder"}: |                 if uniques.keys() >= {"folder", "subfolder"}: | ||||||
|                     node = self.connections[uniques["folder"]][uniques["subfolder"]][uniques["id"]] |                     node = self.connections[uniques["folder"]][uniques["subfolder"]][uniques["id"]] | ||||||
| @@ -102,7 +108,8 @@ class configfile: | |||||||
|                     node = self.connections[uniques["folder"]][uniques["id"]] |                     node = self.connections[uniques["folder"]][uniques["id"]] | ||||||
|                 else: |                 else: | ||||||
|                     node = self.connections[uniques["id"]] |                     node = self.connections[uniques["id"]] | ||||||
|                 return node |                 newnode = node.copy() | ||||||
|  |                 return newnode | ||||||
|  |  | ||||||
|     def _connections_add(self,*, id, host, folder='', subfolder='', options='', logs='', password='', port='', protocol='', user='', type = "connection" ): |     def _connections_add(self,*, id, host, folder='', subfolder='', options='', logs='', password='', port='', protocol='', user='', type = "connection" ): | ||||||
|         if folder == '': |         if folder == '': | ||||||
|   | |||||||
| @@ -88,6 +88,10 @@ class connapp: | |||||||
|         if args.action == "connect" or args.action == "debug": |         if args.action == "connect" or args.action == "debug": | ||||||
|             if args.data == None: |             if args.data == None: | ||||||
|                 matches = self.nodes |                 matches = self.nodes | ||||||
|  |                 if len(matches) == 0: | ||||||
|  |                     print("There are no nodes created") | ||||||
|  |                     print("try: conn --help") | ||||||
|  |                     exit(9) | ||||||
|             else: |             else: | ||||||
|                 if args.data.startswith("@"): |                 if args.data.startswith("@"): | ||||||
|                     matches = list(filter(lambda k: args.data in k, self.nodes)) |                     matches = list(filter(lambda k: args.data in k, self.nodes)) | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								conn/core.py
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								conn/core.py
									
									
									
									
									
								
							| @@ -104,6 +104,8 @@ class node: | |||||||
|     def interact(self, debug = False): |     def interact(self, debug = False): | ||||||
|         connect = self._connect(debug = debug) |         connect = self._connect(debug = debug) | ||||||
|         if connect == True: |         if connect == True: | ||||||
|  |             size = re.search('columns=([0-9]+).*lines=([0-9]+)',str(os.get_terminal_size())) | ||||||
|  |             self.child.setwinsize(int(size.group(2)),int(size.group(1))) | ||||||
|             print("Connected to " + self.unique + " at " + self.host + (":" if self.port != '' else '') + self.port + " via: " + self.protocol) |             print("Connected to " + self.unique + " at " + self.host + (":" if self.port != '' else '') + self.port + " via: " + self.protocol) | ||||||
|             if 'logfile' in dir(self): |             if 'logfile' in dir(self): | ||||||
|                 self.child.logfile_read = open(self.logfile, "wb") |                 self.child.logfile_read = open(self.logfile, "wb") | ||||||
| @@ -121,21 +123,33 @@ class node: | |||||||
|     def run(self, commands,*, folder = '', prompt = '>$|#$|\$$|>.$|#.$|\$.$', stdout = False): |     def run(self, commands,*, folder = '', prompt = '>$|#$|\$$|>.$|#.$|\$.$', stdout = False): | ||||||
|         connect = self._connect() |         connect = self._connect() | ||||||
|         if connect == True: |         if connect == True: | ||||||
|             winsize = self.child.getwinsize() |             expects = [prompt, pexpect.EOF] | ||||||
|             self.child.setwinsize(65535,winsize[1]) |  | ||||||
|             output = '' |             output = '' | ||||||
|             if isinstance(commands, list): |             if isinstance(commands, list): | ||||||
|                 for c in commands: |                 for c in commands: | ||||||
|                     self.child.expect(prompt) |                     result = self.child.expect(expects) | ||||||
|                     self.child.sendline(c) |                     self.child.sendline(c) | ||||||
|  |                     match result: | ||||||
|  |                         case 0: | ||||||
|                             output = output + self.child.before.decode() + self.child.after.decode() |                             output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|  |                         case 1: | ||||||
|  |                             output = output + self.child.before.decode() | ||||||
|             else: |             else: | ||||||
|                 self.child.expect(prompt) |                 result = self.child.expect(expects) | ||||||
|                 self.child.sendline(commands) |                 self.child.sendline(commands) | ||||||
|  |                 match result: | ||||||
|  |                     case 0: | ||||||
|                         output = output + self.child.before.decode() + self.child.after.decode() |                         output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|             self.child.expect(prompt) |                     case 1: | ||||||
|  |                         output = output + self.child.before.decode() | ||||||
|  |             result = self.child.expect(expects) | ||||||
|  |             match result: | ||||||
|  |                 case 0: | ||||||
|                     output = output + self.child.before.decode() + self.child.after.decode() |                     output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|  |                 case 1: | ||||||
|  |                     output = output + self.child.before.decode() | ||||||
|             self.child.close() |             self.child.close() | ||||||
|  |             output = output.lstrip() | ||||||
|             if stdout == True: |             if stdout == True: | ||||||
|                 print(output) |                 print(output) | ||||||
|             if folder != '': |             if folder != '': | ||||||
| @@ -146,35 +160,50 @@ class node: | |||||||
|             self.output = output |             self.output = output | ||||||
|             return output |             return output | ||||||
|         else: |         else: | ||||||
|  |             self.output = connect | ||||||
|             return connect |             return connect | ||||||
|  |  | ||||||
|     def test(self, commands, expected, *, prompt = '>$|#$|\$$|>.$|#.$|\$.$'): |     def test(self, commands, expected, *, prompt = '>$|#$|\$$|>.$|#.$|\$.$'): | ||||||
|         connect = self._connect() |         connect = self._connect() | ||||||
|         if connect == True: |         if connect == True: | ||||||
|             winsize = self.child.getwinsize() |             expects = [prompt, pexpect.EOF] | ||||||
|             self.child.setwinsize(65535,winsize[1]) |  | ||||||
|             output = '' |             output = '' | ||||||
|             if isinstance(commands, list): |             if isinstance(commands, list): | ||||||
|                 for c in commands: |                 for c in commands: | ||||||
|                     self.child.expect(prompt) |                     result = self.child.expect(expects) | ||||||
|                     self.child.sendline(c) |                     self.child.sendline(c) | ||||||
|  |                     match result: | ||||||
|  |                         case 0: | ||||||
|                             output = output + self.child.before.decode() + self.child.after.decode() |                             output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|  |                         case 1: | ||||||
|  |                             output = output + self.child.before.decode() | ||||||
|             else: |             else: | ||||||
|                 self.child.expect(prompt) |                 self.child.expect(expects) | ||||||
|                 self.child.sendline(commands) |                 self.child.sendline(commands) | ||||||
|                 output = output + self.child.before.decode() + self.child.after.decode() |                 output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|             expects = [expected, prompt] |             expects = [expected, prompt, pexpect.EOF] | ||||||
|             results = self.child.expect(expects) |             results = self.child.expect(expects) | ||||||
|             output = output + self.child.before.decode() + self.child.after.decode() |  | ||||||
|             self.output = output |  | ||||||
|             match results: |             match results: | ||||||
|                 case 0: |                 case 0: | ||||||
|                     self.child.close() |                     self.child.close() | ||||||
|  |                     self.test = True | ||||||
|  |                     output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|  |                     output = output.lstrip() | ||||||
|  |                     self.output = output | ||||||
|                     return True |                     return True | ||||||
|                 case 1: |                 case 1 | 2: | ||||||
|                     self.child.close() |                     self.child.close() | ||||||
|  |                     self.test = False | ||||||
|  |                     if results == 1: | ||||||
|  |                         output = output + self.child.before.decode() + self.child.after.decode() | ||||||
|  |                     elif results == 2: | ||||||
|  |                         output = output + self.child.before.decode() | ||||||
|  |                     output = output.lstrip() | ||||||
|  |                     self.output = output | ||||||
|                     return False |                     return False | ||||||
|         else: |         else: | ||||||
|  |             self.test = None | ||||||
|  |             self.output = connect | ||||||
|             return connect |             return connect | ||||||
|  |  | ||||||
|     def _connect(self, debug = False): |     def _connect(self, debug = False): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user