Changeset 1197

Show
Ignore:
Timestamp:
08/01/07 04:10:33 (6 years ago)
Author:
ggpolo
Message:

Merged with trunk again and adapted

Location:
branch/ggpolo
Files:
14 modified
2 copied

Legend:

Unmodified
Added
Removed
  • branch/ggpolo/share/umit/config/target_list.txt

    r1179 r1197  
     1192.168.0.1 
    12192.168.7.105 
  • branch/ggpolo/umit

    r1179 r1197  
    2525import sys 
    2626import signal 
    27 from os.path import join, split, exists, abspath, dirname 
     27from os.path import join, split, expanduser 
    2828 
    2929###################################### 
     
    3131 
    3232from umitCore.Paths import Path 
    33 print ">>> USING THIS PATH:", split(sys.argv[0])[0] 
    3433 
    35 config_file = join(split(sys.argv[0])[0], 'config', 'umit.conf') 
    36 share_config_file = join(split(abspath(dirname(sys.argv[0])))[0], "share", 
    37                          "umit",  "config", "umit.conf") 
     34config_files = [] 
     35config_files.append(join(split(sys.argv[0])[0], 'share', 'umit',  
     36                         'config', 'umit.conf')) 
     37config_files.append(join(split(sys.argv[0])[0], 'config', 'umit.conf')) 
     38config_files.append("/usr/share/umit/config/umit.conf") 
     39config_files.append(join(expanduser("~"), ".umit", "umit.conf")) 
    3840 
    39 if exists(config_file): 
    40     Path.set_umit_conf(config_file) 
    41 elif exists(share_config_file): 
    42     Path.set_umit_conf(share_config_file) 
    43 else: 
    44     raise Exception("Config file couldn't be found!") 
     41Path.set_umit_conf(config_files) 
    4542 
    4643###################################### 
  • branch/ggpolo/umitCore/I18N.py

    r1179 r1197  
    2222import locale 
    2323 
    24 from umitCore.Logging import log 
    2524LC_ALL = locale.setlocale(locale.LC_ALL, '') 
    2625LANG, ENC = locale.getdefaultlocale() 
     
    4140 
    4241except ImportError: 
    43     log.critical("You don't have gettext module, no \ 
    44 internationalization will be used.") 
    45  
    4642    # define _() so program will not fail 
    4743    import __builtin__ 
     
    5854    # and thus, the text may be very hard to understand, but yet, no error will 
    5955    # occour 
    60     log.debug(">>> Converting '%s' from '%s' to unicode" % (string, ENC)) 
    6156    string = string.decode("utf8", ERRORS).encode("utf8", ERRORS) 
    62     log.debug(">>> Converted to: '%s'" % string) 
    6357 
    6458    return string 
  • branch/ggpolo/umitCore/Logging.py

    r1179 r1197  
    2222 
    2323from logging import Logger, StreamHandler, Formatter 
     24from umitCore.UmitOptionParser import option_parser 
    2425 
    25 LOGLEVEL = 0 
     26LOGLEVEL = option_parser.get_verbose() 
    2627 
    2728class Log(Logger, object): 
  • branch/ggpolo/umitCore/Paths.py

    r1179 r1197  
    7878     
    7979    def set_umit_conf(self, umit_conf): 
    80         self.using_main = False 
    81  
    8280        # Place supposed to have the user's config file 
    83         supposed_user_conf = os.path.join(base_paths['user_dir'], base_paths['config_file']) 
    84  
     81        supposed_user_conf = os.path.join(base_paths['user_dir'], 
     82                                          base_paths['config_file']) 
    8583        config_file = supposed_user_conf 
     84        parsed = False 
     85 
    8686        if os.path.exists(supposed_user_conf)\ 
    8787               and check_access(supposed_user_conf, os.R_OK): 
    88             self.config_parser.read(config_file) 
    89             log.debug(">>> Using config files in user home directory: %s" % config_file) 
    90  
    91         elif not os.path.exists(supposed_user_conf)\ 
     88            try: 
     89                self.config_parser.read(config_file) 
     90                log.debug(">>> Using config files in user home \ 
     91directory: %s" % config_file) 
     92                parsed = True 
     93            except: 
     94                log.debug(">>> Failed to load config file from \ 
     95user home directory") 
     96 
     97        if not parsed and not os.path.exists(supposed_user_conf)\ 
    9298                 and not check_access(base_paths['user_dir'], os.R_OK and os.W_OK): 
    93             result = create_user_dir(umit_conf, HOME) 
    94             config_file = result['config_file'] 
    95             self.config_parser.read(config_file) 
    96             [self.__setattr__(opt, result[opt]) for opt in result] 
    97             log.debug(">>> Using recently created config files in user home: %s" % config_file) 
    98  
    99         else: 
    100             self.using_main = True 
    101             config_file = umit_conf 
    102             self.config_parser.read(config_file) 
    103             log.debug(">>> Using main config file: %s" % config_file) 
     99            try: 
     100                result = create_user_dir(umit_conf, HOME) 
     101                config_file = result['config_file'] 
     102                self.config_parser.read(config_file) 
     103                [self.__setattr__(opt, result[opt]) for opt in result] 
     104                log.debug(">>> Using recently created config files in \ 
     105user home: %s" % config_file) 
     106                parsed = True 
     107            except: 
     108                log.debug(">>> Failed to create user home") 
     109 
     110        if not parsed and type(umit_conf) == type([]): 
     111            config_file = self.config_parser.read(umit_conf) 
     112            if config_file != None and len(config_file) >= 1: 
     113                config_file = config_file[0] 
     114            else: 
     115                raise Exception("Couldn't load umit config file!") 
    104116 
    105117        # Should make the following only after reading the umit.conf file 
     
    155167# Functions for directories creation 
    156168 
    157 def create_user_dir(main_config, user_home): 
     169def create_user_dir(config_list, user_home): 
     170    main_config = None 
     171    for config in config_list: 
     172        if os.path.exists(config): 
     173            main_config = config 
     174            break 
     175    else: 
     176        log.critical(">>> No useful configuration file found in this list: %s"\ 
     177                 % config_list) 
     178        raise Exception(">>> No usefull configuration file found!") 
     179 
    158180    log.debug(">>> Create user dir at given home: %s" % user_home) 
    159181    log.debug(">>> Using %s as source" % main_config) 
  • branch/ggpolo/umitCore/UmitConfigParser.py

    r1179 r1197  
    3838    def read(self, filenames): 
    3939        self.filenames = ConfigParser.read(self, filenames)     
     40        return self.filenames 
    4041 
    4142    def readfp(self, fp, filename=None): 
  • branch/ggpolo/umitGUI/About.py

    r1179 r1197  
    224224Maxim I. Gavrilov <lovelymax@gmail.com> 
    225225 
    226 Nmap Python Wrapper: 
    227 Pavel Klemenkov <parser@cs.msu.su> 
    228  
    229226Umit Web: 
    230227Rodolfo da Silva Carvalho <rodolfo.ueg@gmail.com> 
  • branch/ggpolo/umitGUI/App.py

    r1179 r1197  
    2424import os.path 
    2525import sys 
    26 import optparse 
    27  
    28 import gtk 
    29 import gtk.gdk 
    30 import gobject 
    31  
    32 from umitGUI.Splash import Splash 
    33 from umitGUI.MainWindow import MainWindow 
    34  
    35 from umitInventory.Viewer import InventoryViewer 
    3626 
    3727from umitCore.Paths import Path 
     28from umitCore.UmitOptionParser import option_parser 
    3829from umitCore.UmitConf import is_maemo 
    3930from umitCore.I18N import _ 
     
    5445class App: 
    5546    def __init__(self, args=sys.argv): 
    56         self.__create_option_parser() 
    57  
    58     def __create_option_parser(self): 
    59         self.option_parser = optparse.OptionParser() 
    60         self.option_parser.add_option("-i", "--inventory", default=False,  
    61                                       action="store_true", 
    62                                       help=_("start Network Inventory")) 
    63         self.options, self.args = self.option_parser.parse_args() 
     47        pass 
    6448 
    6549    def __parse_cmd_line(self): 
     
    6751 
    6852    def __create_show_main_window(self): 
    69         if self.options.inventory: 
     53        if option_parser.get_inventory(): 
     54            from umitInventory.Viewer import InventoryViewer 
    7055            self.main_window = InventoryViewer() 
    71             self.main_window.connect('destroy', lambda *args: gtk.main_quit()) 
    7256        else: 
     57            from umitGUI.MainWindow import MainWindow 
    7358            self.main_window = MainWindow() 
    7459         
     
    7762            self.hildon_app = hildon.Program() 
    7863            self.hildon_app.add_window(self.main_window) 
    79          
     64 
    8065        self.main_window.show_all() 
    8166     
     
    10792        except: 
    10893            log.warning(_("RUNNING WITHOUT PSYCO!")) 
    109             log.warning(_("""Psyco is a module that speeds up the execution of this \ 
    110 application. It is not a requirement, and Umit runs perfectly well with or without it, \ 
    111 but you're encourajed to install it to have a better speed experience. Download it \ 
    112 at http://psyco.sf.net/""")) 
     94            log.warning(_("""Psyco is a module that speeds up the execution \ 
     95of this application. It is not a requirement, and Umit runs perfectly \ 
     96with or without it, but you're encourajed to install it to have a better \ 
     97speed experience. Download it at http://psyco.sf.net/""")) 
    11398            self.using_psyco = False 
     99 
     100        self.diff = option_parser.get_diff() 
     101        if self.diff: 
     102            self.__run_text() 
     103        else: 
     104            self.__run_gui() 
     105 
     106    def __run_text(self): 
     107        log.info(">>> Text Mode") 
     108 
     109    def __run_gui(self): 
     110        log.info(">>> GUI Mode") 
     111        import gtk 
     112        import gobject 
     113        from umitGUI.Splash import Splash 
    114114 
    115115        if not is_maemo(): 
  • branch/ggpolo/umitGUI/MainWindow.py

    r1179 r1197  
    5050from umitCore.Logging import log 
    5151from umitCore.I18N import _ 
     52from umitCore.UmitOptionParser import option_parser 
    5253from umitCore.UmitConf import SearchConfig, is_maemo 
    5354from umitCore.UmitDB import Scans, UmitDB 
     
    6263root = False 
    6364try: 
    64     if sys.platform == 'win32': root = True 
    65     elif is_maemo(): root = True 
    66     elif os.getuid() == 0: root = True 
     65    if sys.platform == 'win32': 
     66        root = True 
     67    elif is_maemo(): 
     68        root = True 
     69    elif os.getuid() == 0: 
     70        root = True 
    6771except: pass 
    6872 
     
    116120        self._profile_filechooser_dialog = None 
    117121        self._results_filechooser_dialog = None 
    118          
    119         self._new_scan_cb (None) 
     122 
     123        # Loading files passed as argument 
     124        files = option_parser.get_open_results() 
     125        if len(files) >= 1: 
     126            for file in files: 
     127                self._load(filename=file) 
    120128 
    121129    def configure_focus_chain(self): 
     
    735743    def _create_scan_notebook(self): 
    736744        self.scan_notebook = ScanNotebook() 
     745        page = self._new_scan_cb() 
    737746        self.scan_notebook.show_all() 
     747 
     748        # Applying some command line options 
     749        target = option_parser.get_target() 
     750        profile = option_parser.get_profile() 
     751        nmap = option_parser.get_nmap() 
     752 
     753        if nmap: 
     754            page.command_toolbar.command = " ".join(nmap) 
     755            page.start_scan_cb() 
     756 
     757        else: 
     758            if target: 
     759                page.toolbar.selected_target = target 
     760 
     761            if profile: 
     762                page.toolbar.selected_profile = profile 
     763 
     764            if target and profile: 
     765                log.debug(">>> Executing scan with the given args: %s \ 
     766with %s" % (target, profile)) 
     767                page.start_scan_cb() 
     768 
    738769        if is_maemo(): 
    739770            # No padding. We need space! 
     
    793824            else: 
    794825                log.debug(">>> Creating a new page to load it.") 
    795                 scan_page = self._new_scan_cb(None) 
     826                scan_page = self._new_scan_cb() 
    796827 
    797828            log.debug(">>> Enabling page widgets") 
     
    9791010            alert.destroy() 
    9801011     
    981     def _new_scan_cb(self, widget, data=None): 
     1012    def _new_scan_cb(self, widget=None, data=None): 
    9821013        """Append a new ScanNotebookPage to ScanNotebook 
    9831014        New tab properties: 
  • branch/ggpolo/umitGUI/ScanNotebook.py

    r1179 r1197  
    435435        self.get_parent().set_tab_title(self, label) 
    436436     
    437     def start_scan_cb(self, widget): 
     437    def start_scan_cb(self, widget=None): 
    438438        target = self.toolbar.selected_target 
    439439        command = self.command_toolbar.command 
     
    716716                     
    717717                self.scan_result.scan_host_view.add_host({hostname:{'stock':icon, 
    718                                                                         'action':None}}) 
     718                                                                    'action':None}}) 
    719719                 
    720720            # Select the first host found 
     
    10631063            host_page.add_port([self.findout_service_icon(p), 
    10641064                                p.get('portid', ''), 
     1065                                p.get('protocol', ''), 
    10651066                                p.get('port_state', ''), 
    10661067                                p.get('service_name', ''), 
     
    10891090        for host in host_list: 
    10901091            parent = host_page.port_tree.append(None, [host['host'].\ 
    1091                                                 get_hostname(),'','','','','']) 
     1092                                            get_hostname(),'','','','','', '']) 
    10921093            for port in host['host'].get_ports(): 
    10931094                for p in port.get('port', []): 
    10941095                    host_page.port_tree.append(parent, \ 
    1095                                 ['',self.findout_service_icon(p), p.get('portid', ""),\ 
    1096                                 p.get('port_state', ""),p.get('service_name', _("Unknown")),\ 
    1097                                 p.get('service_product', "")]) 
     1096                                ['', 
     1097                                 self.findout_service_icon(p), 
     1098                                 p.get('portid', ""), 
     1099                                 p.get('protocol', ''), 
     1100                                 p.get('port_state', ""), 
     1101                                 p.get('service_name', _("Unknown")), 
     1102                                 p.get('service_product', "")]) 
    10981103 
    10991104    def set_multiple_service_host(self, service_list): 
  • branch/ggpolo/umitGUI/ScanOpenPortsPage.py

    r1179 r1197  
    5151        # Ports view 
    5252        self.port_columns = {} 
    53         self.port_list = gtk.ListStore(str, str, str, str, str, str) 
    54         self.port_tree = gtk.TreeStore(str, str, str, str, str, str) 
     53        self.port_list = gtk.ListStore(str, str, str, str, str, str, str) 
     54        self.port_tree = gtk.TreeStore(str, str, str, str, str, str, str) 
    5555         
    5656        self.port_view = gtk.TreeView(self.port_list) 
     
    6262        self.port_columns['icon'] = gtk.TreeViewColumn('') 
    6363        self.port_columns['port_number'] = gtk.TreeViewColumn(_('Port')) 
     64        self.port_columns['protocol'] = gtk.TreeViewColumn(_('Protocol')) 
    6465        self.port_columns['state'] = gtk.TreeViewColumn(_('State')) 
    6566        self.port_columns['service'] = gtk.TreeViewColumn(_('Service')) 
     
    162163        self.port_view.append_column(self.port_columns['icon']) 
    163164        self.port_view.append_column(self.port_columns['port_number']) 
     165        self.port_view.append_column(self.port_columns['protocol']) 
    164166        self.port_view.append_column(self.port_columns['state']) 
    165167        self.port_view.append_column(self.port_columns['service']) 
     
    169171            self.port_columns[k].set_reorderable(True) 
    170172            self.port_columns[k].set_resizable(True) 
    171          
     173 
     174 
     175        self.port_columns['icon'].set_min_width(35) 
     176 
    172177        self.port_columns['hostname'].connect('clicked', self.set_search_cb, 0) 
    173178        self.port_columns['icon'].connect('clicked', self.set_search_cb, 4) 
    174         self.port_columns['port_number'].connect('clicked', self.set_search_cb, 2) 
    175         self.port_columns['state'].connect('clicked', self.set_search_cb, 3) 
    176         self.port_columns['service'].connect('clicked', self.set_search_cb, 4) 
    177         self.port_columns['version'].connect('clicked', self.set_search_cb, 5) 
     179        self.port_columns['port_number'].connect('clicked', self.set_search_cb, 
     180                                                 2) 
     181        self.port_columns['protocol'].connect('clicked', self.set_search_cb, 3) 
     182        self.port_columns['state'].connect('clicked', self.set_search_cb, 4) 
     183        self.port_columns['service'].connect('clicked', self.set_search_cb, 5) 
     184        self.port_columns['version'].connect('clicked', self.set_search_cb, 6) 
    178185         
    179186        self.port_columns['hostname'].set_sort_column_id(0) 
    180         self.port_columns['icon'].set_min_width(35) 
    181         self.port_columns['icon'].set_sort_column_id(3) 
    182         self.port_columns['port_number'].set_sort_column_id(1) 
    183         self.port_columns['state'].set_sort_column_id(2) 
    184         self.port_columns['service'].set_sort_column_id(3) 
    185         self.port_columns['version'].set_sort_column_id(4) 
     187        self.port_columns['icon'].set_sort_column_id(4) 
     188        self.port_columns['port_number'].set_sort_column_id(2) 
     189        self.port_columns['protocol'].set_sort_column_id(3) 
     190        self.port_columns['state'].set_sort_column_id(4) 
     191        self.port_columns['service'].set_sort_column_id(5) 
     192        self.port_columns['version'].set_sort_column_id(6) 
    186193         
    187194        self.port_columns['hostname'].pack_start(self.cell_port, True) 
    188195        self.port_columns['icon'].pack_start(self.cell_icon, True) 
    189196        self.port_columns['port_number'].pack_start(self.cell_port, True) 
     197        self.port_columns['protocol'].pack_start(self.cell_port, True) 
    190198        self.port_columns['service'].pack_start(self.cell_port, True) 
    191199        self.port_columns['version'].pack_start(self.cell_port, True) 
     
    195203        self.port_columns['icon'].set_attributes(self.cell_icon, stock_id=1) 
    196204        self.port_columns['port_number'].set_attributes(self.cell_port, text=2) 
    197         self.port_columns['state'].set_attributes(self.cell_port, text=3) 
    198         self.port_columns['service'].set_attributes(self.cell_port, text=4) 
    199         self.port_columns['version'].set_attributes(self.cell_port, text=5) 
     205        self.port_columns['protocol'].set_attributes(self.cell_port, text=3) 
     206        self.port_columns['state'].set_attributes(self.cell_port, text=4) 
     207        self.port_columns['service'].set_attributes(self.cell_port, text=5) 
     208        self.port_columns['version'].set_attributes(self.cell_port, text=6) 
    200209         
    201210        self.port_columns['hostname'].set_visible(False) 
  • branch/ggpolo/umitGUI/ScanToolbar.py

    r1179 r1197  
    126126 
    127127    def set_selected_profile(self, profile): 
    128         self.profile_entry.selected_entry = profile 
     128        self.profile_entry.selected_profile = profile 
    129129 
    130130    selected_profile = property(get_selected_profile, set_selected_profile) 
  • branch/ggpolo/umitInventory/Viewer.py

    r1168 r1197  
    202202         
    203203        self.daddy = daddy 
     204        if not self.daddy: 
     205            self.connect('destroy', lambda *args: gtk.main_quit()) 
     206 
    204207        self.tip_timer = -1 
    205208        self.main_accel_group = gtk.AccelGroup()