mirror of
				https://github.com/KevinMidboe/mktxp-no-cli.git
				synced 2025-10-29 17:50:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!.usr/bin/env python
 | 
						|
# coding=utf8
 | 
						|
## Copyright (c) 2020 Arseniy Kuznetsov
 | 
						|
##
 | 
						|
## This program is free software; you can redistribute it and/or
 | 
						|
## modify it under the terms of the GNU General Public License
 | 
						|
## as published by the Free Software Foundation; either version 2
 | 
						|
## of the License, or (at your option) any later version.
 | 
						|
##
 | 
						|
## This program is distributed in the hope that it will be useful,
 | 
						|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
## GNU General Public License for more details.
 | 
						|
 | 
						|
 | 
						|
import subprocess
 | 
						|
from mktxp.cli.config.config import config_handler
 | 
						|
from mktxp.cli.options import MKTXPOptionsParser, MKTXPCommands
 | 
						|
from mktxp.flow.processor.base_proc import ExportProcessor, OutputProcessor
 | 
						|
 | 
						|
 | 
						|
class MKTXPDispatcher:
 | 
						|
    ''' Base MKTXP Commands Dispatcher
 | 
						|
    '''
 | 
						|
    def __init__(self):
 | 
						|
        self.option_parser = MKTXPOptionsParser()
 | 
						|
 | 
						|
    # Dispatcher
 | 
						|
    def dispatch(self):
 | 
						|
        args = self.option_parser.parse_options()
 | 
						|
 | 
						|
        if args['sub_cmd'] == MKTXPCommands.INFO:
 | 
						|
            self.print_info()
 | 
						|
 | 
						|
        elif args['sub_cmd'] == MKTXPCommands.SHOW:
 | 
						|
            self.show_entries(args)
 | 
						|
 | 
						|
        elif args['sub_cmd'] == MKTXPCommands.EXPORT:
 | 
						|
            self.start_export(args)
 | 
						|
 | 
						|
        elif args['sub_cmd'] == MKTXPCommands.PRINT:
 | 
						|
            self.print(args)
 | 
						|
 | 
						|
        elif args['sub_cmd'] == MKTXPCommands.EDIT:
 | 
						|
            self.edit_entry(args)
 | 
						|
 | 
						|
        else:
 | 
						|
            # nothing to dispatch
 | 
						|
            return False
 | 
						|
 | 
						|
        return True
 | 
						|
 | 
						|
    # Dispatched methods
 | 
						|
    def print_info(self):
 | 
						|
        ''' Prints MKTXP general info
 | 
						|
        '''
 | 
						|
        print(f'{self.option_parser.script_name}: {self.option_parser.description}')
 | 
						|
 | 
						|
    def show_entries(self, args):
 | 
						|
        if args['config']:
 | 
						|
            print(f'MKTXP data config: {config_handler.usr_conf_data_path}')
 | 
						|
            print(f'MKTXP internal config: {config_handler.mktxp_conf_path}')
 | 
						|
        else:
 | 
						|
            for entryname in config_handler.registered_entries():
 | 
						|
                if args['entry_name'] and entryname != args['entry_name']:
 | 
						|
                    continue
 | 
						|
                entry = config_handler.config_entry(entryname)
 | 
						|
                print(f'[{entryname}]')
 | 
						|
                divider_fields = set(['username', 'use_ssl', 'dhcp'])
 | 
						|
                for field in entry._fields:
 | 
						|
                    if field == 'password':
 | 
						|
                        print(f'    {field}: {"*" * len(entry.password)}')
 | 
						|
                    else:
 | 
						|
                        if field in divider_fields:
 | 
						|
                            print()
 | 
						|
                        print(f'    {field}: {getattr(entry, field)}')
 | 
						|
                print('\n')
 | 
						|
 | 
						|
    def edit_entry(self, args):        
 | 
						|
        editor = args['editor']
 | 
						|
        if not editor:
 | 
						|
            print(f'No editor to edit the following file with: {config_handler.usr_conf_data_path}')
 | 
						|
        if args['internal']:
 | 
						|
            subprocess.check_call([editor, config_handler.mktxp_conf_path])
 | 
						|
        else:
 | 
						|
            subprocess.check_call([editor, config_handler.usr_conf_data_path])
 | 
						|
       
 | 
						|
    def start_export(self, args):
 | 
						|
        ExportProcessor.start()
 | 
						|
 | 
						|
    def print(self, args):
 | 
						|
        if args['wifi_clients']:
 | 
						|
            OutputProcessor.wifi_clients(args['entry_name'])
 | 
						|
 | 
						|
        elif args['capsman_clients']:
 | 
						|
            OutputProcessor.capsman_clients(args['entry_name'])
 | 
						|
 | 
						|
        elif args['dhcp_clients']:
 | 
						|
            OutputProcessor.dhcp_clients(args['entry_name'])
 | 
						|
 | 
						|
        else:
 | 
						|
            print("Select metric option(s) to print out, or run 'mktxp print -h' to find out more")
 | 
						|
 | 
						|
def main():
 | 
						|
    MKTXPDispatcher().dispatch()
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 | 
						|
 |