Changeset 6413


Ignore:
Timestamp:
Nov 30, 2017, 2:43:05 PM (2 years ago)
Author:
mabarracus
Message:

Remove stored useless information
Internal use with unicode strings
Clean json output

Location:
hwdetector/trunk/fuentes
Files:
5 edited

Legend:

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

    r6405 r6413  
     1hwdetector (0.1.5) xenial; urgency=medium
     2
     3  * Remove stored useless information
     4  * Internal use with unicode strings
     5  * Clean json output
     6
     7 -- M.Angel Juan <m.angel.juan@gmail.com>  Thu, 30 Nov 2017 14:41:36 +0100
     8
    19hwdetector (0.1.4) xenial; urgency=medium
    210
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxhelpers.py

    r6399 r6413  
    6767                if not m:
    6868                    r += line + "\n"
     69        try:
     70            r=r.decode('utf-8')
     71        except UnicodeDecodeError:
     72            r=r.encode('utf-8')
    6973        return r.strip()
    7074
     
    97101            content = urllib.urlopen(args[0])
    98102            data = content.read()
     103            try:
     104                data=data.decode('utf-8')
     105            except UnicodeDecodeError:
     106                data=data.encode('utf-8')
    99107            return data
    100108        except Exception as e:
     
    103111    def file_find_line(self, content, *args, **kwargs):
    104112
    105         if not (isinstance(content,str) or isinstance(content,list)):
     113        if not (isinstance(content,str) or isinstance(content,list) or isinstance(content,unicode)):
    106114            return None
    107115
     
    128136
    129137        if not multimatch:
    130             r=re.compile('\s*'.join(keys),re.IGNORECASE)
     138            r=re.compile('\s*'.join(keys),re.IGNORECASE | re.UNICODE)
    131139        else:
    132140            r=[]
    133141            for k in keys:
    134                 r.append(re.compile('\s*'.join(k),re.IGNORECASE))
     142                r.append(re.compile('\s*'.join(k),re.IGNORECASE | re.UNICODE))
    135143        i=0
    136144        output = []
     
    268276        if stdout != None:
    269277            if with_uncomment:
    270                 return self.uncomment(stdout.strip())
    271             else:
    272                 return stdout.strip()
     278                out=self.uncomment(stdout.strip())
     279            else:
     280                out=stdout.strip()
     281            try:
     282                out=out.decode('utf-8')
     283            except UnicodeDecodeError:
     284                out=out.encode('utf-8')
     285            return out
    273286        else:
    274287            log.error("Execution of {} hasn't produced any result, returning None".format(kwargs['run']))
    275288            return None
     289
    276290    def compress_file(self,*args,**kwargs):
    277291        file=kwargs.get('file')
     
    283297                try:
    284298                    with open(file,'r') as f:
    285                         return ('__gz__',base64.b64encode(zlib.compress(f.read().strip())))
     299                        try:
     300                            content=f.read()
     301                        except:
     302                            return None
     303                        try:
     304                            return ('__gz__',base64.b64encode(zlib.compress(content.encode('utf-8').strip())))
     305                        except:
     306                            return ('__gz__',base64.b64encode(zlib.compress(content.strip())))
    286307                except Exception as e:
    287                     return 'NOT_READABLE'
     308                    log.warning('Fail compressing file {} : {}'.format(file,e))
     309                    return None
    288310        if string:
    289311            try:
    290                 return ('__gz__',base64.b64encode(zlib.compress(string.strip())))
     312                try:
     313                    return ('__gz__',base64.b64encode(zlib.compress(string.encode('utf-8').strip())))
     314                except:
     315                    return ('__gz__',base64.b64encode(zlib.compress(string.strip())))
    291316            except Exception as e:
    292                 raise Exception(e)
     317                log.warning('Fail compressing string {} : {}'.format(string,e))
     318                return None
     319
    293320
    294321    def list_files(self,*args,**kwargs):
     
    302329
    303330        paths=[]
    304         if type(path) == type(str()):
     331        if isinstance(path,str) or isinstance(path,unicode):
    305332            paths.append(path)
    306         elif type(path) == type(list()):
    307             for x in [ x for x in path if type(x) == type(str()) ]:
     333        elif isinstance(path,list):
     334            for x in [ x for x in path if isinstance(x,str) or isinstance(x,unicode) ]:
    308335                paths.append(x)
    309336        else:
     
    313340
    314341        if regexp:
    315             reg=re.compile(regexp)
     342            if isinstance(regexp,re._pattern_type):
     343                reg=regexp
     344            else:
     345                reg=re.compile(regexp,re.UNICODE)
     346
    316347            filter=lambda x: [ f for f in x if re.match(reg,f)]
    317348
     
    333364    def compact_files(self,*args,**kwargs):
    334365        files=self.list_files(*args,**kwargs)
    335         if not (files and type(files) == type(list())):
     366        if not (files and isinstance(files,list)):
    336367            return None
    337368        content=''
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxsysteminfo.py

    r6399 r6413  
    3737    def get_varlog(self,*args,**kwargs):
    3838        varlog={}
    39         regexp=re.compile(r'^[^\.]+(\.log|(\.\d+)+)?$')
     39        regexp=re.compile(r'^[^\.]+(\.log|(\.\d+)+)?$',re.UNICODE)
    4040        #filter=lambda x: [ f for f in x if re.match(regexp,f)]
    4141
     
    4747            #        file_names.append(os.path.join(root,filename))
    4848            file_names=self.list_files(path='/var/log',regexp=regexp)
     49            exceptions=['/var/log/lastlog','/var/log/wtmp','/var/log/wtmp.1']
     50            file_names=[ x for x in file_names if x not in exceptions]
    4951            for file in file_names:
    50                 varlog[os.path.basename(file)]=self.compress_file(file=file)
     52                comp=self.compress_file(file=file)
     53                if comp:
     54                    varlog[file]=comp
     55                else:
     56                    log.warning('Fail compressing logfile {}'.format(file))
    5157        except Exception as e:
    5258            return None
  • hwdetector/trunk/fuentes/hwdetector.install/hwdetector/modules/llxsystemsw.py

    r6399 r6413  
    1414        output={}
    1515        pkg_list=self.execute(run='dpkg -l',stderr=None).strip("\n")
    16 
    1716        dpkg_info={'BYNAME':{},'BYSTATUS':{}}
    18         regexp=re.compile(r'^(?P<STATUS>\w+)\s+(?P<PACKAGE>[^:\s]+)(:(?P<PACKAGE_ARCHITECTURE>\S+))?\s+(?P<VERSION>\S+)\s+(?P<BUILD_ARCHITECTURE>\S+)\s+(?P<DESCRIPTION>.*)$')
     17        regexp=re.compile(r'^(?P<STATUS>\w+)\s+(?P<PACKAGE>[^:\s]+)(:(?P<PACKAGE_ARCHITECTURE>\S+))?\s+(?P<VERSION>\S+)\s+(?P<BUILD_ARCHITECTURE>\S+)\s+(?P<DESCRIPTION>.*)$',re.UNICODE)
    1918        for line in pkg_list.split("\n"):
    2019            pkg_info=re.search(regexp,line)
  • hwdetector/trunk/fuentes/valentin.install/usr/bin/valentin

    r6405 r6413  
    2828    indentation=u'\t'*indent
    2929    try:
    30         if type(var) == type(dict()):
     30        if isinstance(var,dict):
    3131            for x in sorted(var.keys()):
    32                 st += u'{}{}\n{}{}'.format(indentation,x,indent_var(var=var[x],indent=indent+1),creturn)
    33         elif type(var) == type(list()):
     32                if not (x.lower().startswith('helper') and indent==0):
     33                    st += u'{}{}\n{}{}'.format(indentation,x,indent_var(var=var[x],indent=indent+1),creturn)
     34        elif isinstance(var,list) or isinstance(var,tuple):
    3435            if len(var) == 2 and var[0] == '__gz__':
    3536                content=zlib.decompress(base64.b64decode(var[1])).decode('utf-8')
     
    3738                st += u'{}{}'.format(indentation,replaced)
    3839            else:
    39                 for x in sorted(var):
    40                     st += u'{}\n'.format(indent_var(var=x,indent=indent+1))
    41         elif type(var) == type(str()):
    42             var = var.encode('utf-8')
     40                if isinstance(var,tuple):
     41                    st += u'{}{}'.format(indentation,var)
     42                else:
     43                    for x in sorted(var):
     44                        st += u'{}\n'.format(indent_var(var=x,indent=indent+1))
     45        elif isinstance(var,str):
     46            try:
     47                var = var.encode('utf-8')
     48            except:
     49                var = var.decode('utf-8')
    4350            replaced = var.replace(u'\n',indentation+u'\n'+indentation)
    4451            st += u'{}{}'.format(indentation,replaced)
    45         elif type(var) == type(unicode()):
     52        elif isinstance(var,unicode):
    4653            replaced = var.replace(u'\n',indentation+u'\n'+indentation)
    4754            st += u'{}{}'.format(indentation,replaced)
    48         elif type(var) == type(bool()) or type(var) == type(int()) or type(var) == type(float()) or type(var) == type(tuple()) or var == None:
     55        elif isinstance(var,bool) or isinstance(var,int) or isinstance(var,float) or var == None:
    4956            st += u'{}{}'.format(indentation,var)
    5057        else:
     
    233240                    pr=indent_var(var=capabilities)
    234241                else:
     242                    for x in (x for x in capabilities.keys() if x.lower().startswith('helper')):
     243                        del capabilities[x]
     244
     245                    def clear_compressed(var):
     246                        try:
     247                            if isinstance(var,tuple) or isinstance(var,list):
     248                                if len(var) == 2 and var[0]=='__gz__':
     249                                    try:
     250                                        var=zlib.decompress(base64.b64decode(var[1])).decode('utf-8')
     251                                    except:
     252                                        pass
     253                                    return var
     254                                var=list(var)
     255                                for i in range(len(var)):
     256                                    var[i]=clear_compressed(var[i])
     257                            elif isinstance(var,dict):
     258                                for x in var:
     259                                    var[x]=clear_compressed(var[x])
     260
     261                            return var
     262                        except Exception as e:
     263                            log.error(e)
     264
     265                    capabilities=clear_compressed(capabilities)
    235266                    pr=json.dumps(capabilities,indent=4,separators=(',',':'),sort_keys=True)
     267
    236268                sys.stdout.write(pr.encode('utf-8'))
    237269                sys.stderr.write('\n')
Note: See TracChangeset for help on using the changeset viewer.