Changeset 6441 for hwdetector


Ignore:
Timestamp:
Dec 11, 2017, 2:13:55 PM (22 months ago)
Author:
mabarracus
Message:

Add some raw infos
Fixed buffer textview bugs
Improved gui visualization mechanism
Fixed unicode bugs

Location:
hwdetector/trunk/fuentes
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • hwdetector/trunk/fuentes/debian/changelog

    r6429 r6441  
     1hwdetector (0.1.7) xenial; urgency=medium
     2
     3  * Add some raw infos
     4  * Fixed buffer textview bugs
     5  * Improved gui visualization mechanism
     6  * Fixed unicode bugs
     7
     8 -- M.Angel Juan <m.angel.juan@gmail.com>  Mon, 11 Dec 2017 14:12:13 +0100
     9
    110hwdetector (0.1.6) xenial; urgency=medium
    211
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxmounts.py

    r6399 r6441  
    147147        if not os.path.isdir('/net/server-sync'):
    148148            return 'NO_EXIST'
    149         lst=self.execute(run='getfacl -tp -R /net/server-sync/',stderr=None,asroot=True).split('\n')
     149        lst=self.execute(run='getfacl -tp -R /net/server-sync/',stderr=None,asroot=True)
    150150        regexp=re.compile('^#\sfile:\s/net/server-sync(\S+)')
    151151        skip_search=False
     
    161161
    162162        attrs={}
    163         for line in lst:
    164             if line == '':
    165                 lsplit=[li for li in skip_search.split('/') if li != '']
    166                 if 'mask' in attrs:
    167                     attrs['acls']=True
     163        if lst:
     164            for line in lst.split('\n'):
     165                if line == '':
     166                    lsplit=[li for li in skip_search.split('/') if li != '']
     167                    if 'mask' in attrs:
     168                        attrs['acls']=True
     169                    else:
     170                        attrs['acls']=False
     171                    d.update(make_hierarchy(lsplit,attrs,d))
     172                    skip_search=False
     173                    attrs={}
     174                    continue
     175                if skip_search:
     176                    fields=[ field for field in line.split(' ') if field != '']
     177                    attrs.setdefault('__'+fields[0],{})
     178                    perms={}
     179                    if fields[0] not in ['mask','other']:
     180                        skip_field=0
     181                    else:
     182                        skip_field=1
     183                    perms.setdefault('perms',fields[2-skip_field])
     184                    try:
     185                        perms.setdefault('defaults',fields[3-skip_field])
     186                    except:
     187                        perms.setdefault('defaults',None)
     188
     189                    attrs['__'+fields[0]].setdefault(fields[1],perms)
     190                    #attrs[fields[0]][fields[1]].append(perms)
     191
    168192                else:
    169                     attrs['acls']=False
    170                 d.update(make_hierarchy(lsplit,attrs,d))
    171                 skip_search=False
    172                 attrs={}
    173                 continue
    174             if skip_search:
    175                 fields=[ field for field in line.split(' ') if field != '']
    176                 attrs.setdefault('__'+fields[0],{})
    177                 perms={}
    178                 if fields[0] not in ['mask','other']:
    179                     skip_field=0
    180                 else:
    181                     skip_field=1
    182                 perms.setdefault('perms',fields[2-skip_field])
    183                 try:
    184                     perms.setdefault('defaults',fields[3-skip_field])
    185                 except:
    186                     perms.setdefault('defaults',None)
    187 
    188                 attrs['__'+fields[0]].setdefault(fields[1],perms)
    189                 #attrs[fields[0]][fields[1]].append(perms)
    190 
    191             else:
    192                 m = re.findall(regexp,line)
    193                 if m:
    194                     skip_search=m[0]
    195                     if os.path.isdir('/net/server-sync'+skip_search):
    196                         attrs['__is_dir']=True
    197                         attrs['__is_file']=False
    198                     else:
    199                         attrs['__is_dir']=False
    200                         attrs['__is_file']=True
    201 
     193                    m = re.findall(regexp,line)
     194                    if m:
     195                        skip_search=m[0]
     196                        if os.path.isdir('/net/server-sync'+skip_search):
     197                            attrs['__is_dir']=True
     198                            attrs['__is_file']=False
     199                        else:
     200                            attrs['__is_dir']=False
     201                            attrs['__is_file']=True
     202
     203        d.setdefault('RAW',lst)
    202204        return d
    203205
     
    206208        output = {'MOUNTS_INFO':None}
    207209        output['MOUNTS_INFO']=self.get_mounts()
    208         output['RAW_MOUNTS_INFO']=self.compress_file(file='/proc/self/mounts')
     210        output['MOUNTS_INFO']['RAW']=self.compress_file(file='/proc/self/mounts')
    209211        output['FSTAB']=self.uncomment('/etc/fstab')
    210212        output['DISK_IDS']=self.execute(run='blkid',stderr=None)
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxn4d.py

    r6399 r6441  
    3535                                else:
    3636                                    failed.append(d['pluginname'])
    37 
    38                     output['N4D_MODULES']={'available':sorted(available),'failed':sorted(failed)}
     37                    available=sorted(available)
     38                    failed=sorted(failed)
     39                    output['N4D_MODULES']={'available':dict(zip(available,available)),'failed':dict(zip(failed,failed))}
    3940        except Exception as e:
    4041            output['N4D_STATUS'].update({'initlog':'not available'})
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxnetwork.py

    r6399 r6441  
    4444                    rt['names']['byiface'][d['src']] = d['net']
    4545                    rt['names']['bynet'][d['net']] = d['src']
     46
     47            rt.setdefault('RAW',routes)
    4648            return rt
    4749
     
    5658                    if key in d and d[key] != None:
    5759                        output[key]=d[key]
     60        output.setdefault('RAW',resolv_lines)
    5861        return output
    5962
     
    9497                output[iface].update({'nalias': aliasnum - 1})
    9598                aliasnum = 1
     99        output.setdefault('RAW',self.execute(run='ifconfig -a',stderr=None))
    96100        return output
    97101
     
    102106            if 'proxy' in x.lower():
    103107                output[x]=environ[x]
     108        try:
     109            output.setdefault('RAW_ENVIRON',output.copy())
     110        except:
     111            pass
    104112
    105113        try:
     
    146154                output['autoconfig']['pacfile'] = ''
    147155
     156        try:
     157            output.setdefault('RAW_DCONF',o)
     158        except:
     159            pass
    148160        return output
    149161
     
    172184                else:
    173185                    netstat_info['BYPORT'][port][proto]=[d['LISTEN_ON']]
     186        netstat_info.setdefault('RAW',netstat_listen)
    174187        return netstat_info
    175188
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxprocess.py

    r6420 r6441  
    2727class LlxProcess(Detector):
    2828
    29     _PROVIDES = ['PROCESS_INFO','HELPER_SEARCH_PROCESS']
     29    _PROVIDES = ['PROCESS_INFO','HELPER_SEARCH_PROCESS','PROCESS_INFO_RAW']
    3030    _NEEDS = ['HELPER_EXECUTE']
    3131
     
    6161        #o.output=output
    6262
    63         return {'PROCESS_INFO': output, 'HELPER_SEARCH_PROCESS': {'code':self.search_process,'glob':globals()}}
     63        return {'PROCESS_INFO': output, 'PROCESS_INFO_RAW':psout,'HELPER_SEARCH_PROCESS': {'code':self.search_process,'glob':globals()}}
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxsysteminfo.py

    r6413 r6441  
    1212class LlxSystemInfo(Detector):
    1313    _NEEDS=['HELPER_EXECUTE','HELPER_COMPRESS_FILE','HELPER_LIST_FILES','HELPER_UNCOMMENT']
    14     _PROVIDES=['LSHW_INFO','DMESG_INFO','VARLOG_INFO','LSUSB_INFO','DMESG_JOURNAL_INFO','SYSCTL_INFO','PAM_INFO','SUDO_INFO','ALTERNATIVES_INFO']
     14    _PROVIDES=['LSHW_INFO','DMESG_INFO','VARLOG_INFO','LSUSB_INFO','DMESG_JOURNAL_INFO','SYSCTL_INFO','PAM_INFO','SUDO_INFO','ALTERNATIVES_INFO','ENVIRONMENT']
    1515
    1616    def get_lshw(self,*args,**kwargs):
    1717        try:
    1818            lsusb=json.loads(self.execute(run='lshw -json',stderr=None))
    19             return lsusb
     19            return {'JSON':lsusb,'RAW':self.execute(run='lshw',stderr=None)}
    2020        except Exception as e:
    2121            return None
     
    7575                return d.setdefault(l[0],value)
    7676        d={}
    77         for key_value in self.execute(run='sysctl -a',stderr=None).split('\n'):
    78             key,value=key_value.split(' = ')
    79             make_hierarchy(d,key.split('.'),value)
     77        raw_info=self.execute(run='sysctl -a',stderr=None)
     78        if raw_info:
     79            for key_value in raw_info.split('\n'):
     80                key,value=key_value.split(' = ')
     81                make_hierarchy(d,key.split('.'),value)
     82        d.setdefault('RAW',raw_info)
    8083        return d
    8184
     
    109112        output['SUDO_INFO']=self.get_sudoers()
    110113        output['ALTERNATIVES_INFO']=self.get_alternatives()
     114        output['ENVIRONMENT']=dict(os.environ)
    111115        return output
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxsystemsw.py

    r6413 r6441  
    2525                status = d['STATUS']
    2626                del d['PACKAGE']
    27                 if name in dpkg_info['BYNAME']:
    28                     dpkg_info['BYNAME'][name].append(d)
    29                 else:
    30                     dpkg_info['BYNAME'][name] =[d]
     27                dpkg_info['BYNAME'].setdefault(name,[])
     28                dpkg_info['BYNAME'][name].append(d.copy())
    3129                d['NAME']=name
    3230                del d['STATUS']
    33                 if status in dpkg_info['BYSTATUS']:
    34                     dpkg_info['BYSTATUS'][status].append(d)
    35                 else:
    36                     dpkg_info['BYSTATUS'][status]=[d]
     31                dpkg_info['BYSTATUS'].setdefault(status,{})
     32                dpkg_info['BYSTATUS'][status].setdefault(name,[])
     33                dpkg_info['BYSTATUS'][status][name].append(d)
     34
    3735
    3836        output.update({'DPKG_INFO':dpkg_info})
     37        output['DPKG_INFO'].setdefault('RAW',pkg_list)
    3938        output.update({'APT_SOURCES':self.compact_files(path=['/etc/apt/sources.list','/etc/apt/sources.list.d/'],regexp=r'[^\.]+\.list$')})
    4039        try:
  • hwdetector/trunk/fuentes/valentin.install/usr/bin/valentin

    r6431 r6441  
    2121    GObject.threads_init()
    2222except Exception as e:
    23     log.error('Unable to import Gtk libraries')
     23    log.error('Unable to import Gtk libraries: {}'.format(e))
    2424
    2525
     
    188188                else:
    189189                    tview.expand_row(sel,False)
     190            self.gui.showText(text=indent_var(var=self.gui.coldict[id_selected]['data']))
    190191        else:
    191192            self.gui.showText(id_selected)
     
    196197        self.handler = Handler(self)
    197198        self._load_glade(**kwargs)
    198         self.buffer=Gtk.TextBuffer()
    199         self.text='Loading...'
    200         self.buffer.set_text(self.text)
     199        #self.buffer=Gtk.TextBuffer()
     200        #self.buffer.set_text(self.text)
    201201        self.textview=self.builder.get_object('textview1')
    202         self.textview.set_buffer(self.buffer)
     202        self.buffer=self.textview.get_buffer()
     203        GObject.idle_add(self.buffer.set_text,'Loading...',priority=GObject.PRIORITY_DEFAULT)
     204        #self.textview.set_buffer(self.buffer)
    203205        self.id=0
    204206        self.done=False
     
    208210    def updateText(self,*args,**kwargs):
    209211        while not self.done:
    210             time.sleep(0.3)
    211             self.buffer.set_text('{} {}'.format(self.text,self.id))
    212             self.textview.set_buffer(self.buffer)
    213         self.buffer.set_text('')
    214         self.textview.set_buffer(self.buffer)
     212            time.sleep(0.2)
     213            #self.buffer.set_text('{} {}'.format(self.text,self.id))
     214            #self.textview.set_buffer(self.buffer)
     215            GObject.idle_add(self.buffer.set_text,'{} {} items'.format('Parsing data ...',self.id),priority=GObject.PRIORITY_DEFAULT)
     216        #self.buffer.set_text(u'')
     217        GObject.idle_add(self.buffer.set_text,u'',priority=GObject.PRIORITY_LOW)
     218        #self.textview.set_buffer(self.buffer)
    215219
    216220    def _store_data(self,data,id=[0]):
     
    262266        else:
    263267            self._store_data(data=str(data).encode('utf-8').decode('utf-8'),id=id)
    264 
    265268        return True
    266269
     
    275278        self.done=True
    276279
    277     def showText(self,id=0,*args,**kwargs):
    278         if id == 0 or not isinstance(id,int):
    279             self.buffer=''
    280         else:
    281             coldata=self.coldict[id]
    282             self.buffer.set_text(str(coldata['data']))
    283 
    284         self.textview.set_buffer(self.buffer)
     280    def showText(self,id=0,text='',*args,**kwargs):
     281        if text=='':
     282            if id == 0 or not isinstance(id,int):
     283                data=''
     284            else:
     285                coldata=self.coldict[id]
     286                data=coldata['data']
     287        else:
     288            data=text
     289
     290        if isinstance(data,unicode) or isinstance(data,str):
     291            pass
     292        else:
     293            data=str(data).encode('utf-8').decode('utf-8')
     294        #self.buffer.set_text(data)
     295        GObject.idle_add(self.buffer.set_text,data,priority=GObject.PRIORITY_DEFAULT)
     296        #self.textview.set_buffer(self.buffer)
    285297        return True
    286298
     
    311323            log.error('can\'t find gladefile')
    312324            sys.exit(1)
    313 
    314 
    315325
    316326
Note: See TracChangeset for help on using the changeset viewer.