Esempio n. 1
0
 def __check_app_directory(self, extension_dirs):
     """Checks each directory in self.dirs for stuff
     """
     extensions = []
     
     for root, dirs, files in walk(extension_dirs):
         for f in files:
             if f == 'manifest.json':
                 manifest = path.join(root, f)
                 name, version, extension = self.__process_manifest_json(manifest)
                 if name[0] == '_':
                     # Check locale for more friendlier name
                     locale_paths = [ '_locales{0}en_US{0}messages.json'.format(self.os.SLASH),
                         '_locales{0}en{0}messages.json'.format(self.os.SLASH)]
                     for locale_path in locale_paths:
                         locale_json = path.join(root, locale_path)
                         if path.isfile(locale_json):
                             with open(locale_json, 'rb') as f:
                                 locale_manifest = json.load(f)
                                 if 'appName' in locale_manifest:
                                     if 'message' in locale_manifest['appName']:
                                         name = locale_manifest['appName']['message']
                                 elif 'extName' in locale_manifest:
                                     if 'message' in locale_manifest['extName']:
                                         name = locale_manifest['extName']['message']
                                 elif 'app_name' in locale_manifest:
                                     if 'message' in locale_manifest['app_name']:
                                         name = locale_manifest['app_name']['message']
                 
                 #e = Extension(self.os.CHROME_NAME, name, version, None, extension)
                 e = Extension(name, version, None, extension)
                 extensions.append(e.todict())
                 
     return extensions
Esempio n. 2
0
 def __init__(self):
     self.rootTreeNode = TreeNode(-1, 0, 'ROOT')
     self.allNodes = []
     self.allTrees = []
     self.allTrees_separated = []
     self.moduleStatistic = {}
     self.extensionParse = Extension()
     self.treeNumber = 0
     self.nodeNumber = 0
Esempio n. 3
0
 def submit(): #Fonction de confirmation DANS la fonction de fenetre.
     if askyesno("Confirmation", "Enregister L'extension ?"):
         FE.quit()
         if Creation.get():
             Extension.ajoutExtension(idJ.get(),nomExt.get(),quantiteExt.get())
         else :
             Extension.setNomExt(idE.get(),nomExt.get())
             Ext.setQuantiteExt(idE.get(),quantiteExt.get())
         return FE.destroy() #Ferme après avoir enregistre.
     else : return
    def extensions(self):
        """Main method which handles the processing of extentsions
        """
        
        extensions = []
        
        if self.find():
            """Internet Explorer has a bunch of registry keys for 
            extensions, so we'll hold two connections open for the
            querying"""
            hklm = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
            hkcu = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER)
            
            for registry_key in self.os.IE_REGKEYS:
            
                key = None
                idx = 0
            
                if registry_key['hive_str'] == 'HKLM':
                    hive = hklm
                elif registry_key['hive_str'] == 'HKCU':
                    hive = hkcu
                
                try:
                    key = _winreg.OpenKey(hive, registry_key['path'])
                    while True:
                        if registry_key['type'] == 'key':
                            entry = _winreg.EnumKey(key, idx)
                            clsid_key = '{}\\{}'.format(registry_key['path'], entry)
                            
                            """For registry keys of type 'key', we open the key
                            and attempt to find a specific ClsidExtension value 
                            to use as the CLSID. If it fails, we just use the 
                            key name itself.
                            """
                            clsid = self.__get_clsid(hive, clsid_key)
                            if not clsid:
                                clsid = entry
                        else:
                            clsid = _winreg.EnumValue(key, idx)[0]
                          
                        id, name, dll = self.__lookup_clsid(clsid)
                        #e = Extension(self.os.IE_NAME, name, None, dll, id)
                        e = Extension(name, None, dll, id)
                        extensions.append(e.todict())
                        
                        idx += 1
                except WindowsError:
                    pass
           
        else:
           print '[!] Could not find Internet Explorer Extensions!'

        return extensions
	def getInstalledExtensions(self):
		curInstalledExtensions = {}
		#get system wide extension
		for fn in listdir(Config.systemDir):
			json_data=open(Config.systemDir+fn+"/metadata.json")
			extension = Extension(json_data.read())
			curInstalledExtensions[extension.getName()] = extension

		#get user extensions
		for fn in listdir(Config.userDir):
			json_data=open(Config.userDir+fn+"/metadata.json")
			extension = Extension(json_data.read())
			if not extension.getName() in curInstalledExtensions:
				curInstalledExtensions[extension.getName()] = extension

		return curInstalledExtensions
Esempio n. 6
0
def est_Disponible_Extension(Extension):
	""" est_Disponible_Extension: Extension -> Bool, True si l'extension est disponible, False sinon. """

	cur.execute(""" SELECT Disponibilite FROM EnsExtensions WHERE Extension_id = ?""", (Extension.get_Extension_id(),))
	disponibility = cur.fetchone()

	return disponibility != None
Esempio n. 7
0
def afficheExtensions(idJeu, modeAdmin):
    
    def retourCatalogue():
        fextension.destroy()
        return catalogue()

    def lancerEmprunt(i):
        fextension.destroy()
        return formulaireEmprunt(i)

    def lancerReserv(i):
        fextension.destroy()
        return reserver(i)
    
    fextension=Tk()
    fextension.title("Extension(s) du jeu ")
    fextension.grid_columnconfigure(0,weight=1)
    fextension.grid_rowconfigure(20,weight=21)

    p = PanedWindow(fextension, orient = HORIZONTAL, height=100, width=600)
    p.grid(row=1, column=1, columnspan=4)
    p.add(Label(p, text="Bonjour pseudo", bg="white", anchor=CENTER, width=20))
    p.add(Button(p, text="Retour au catalogue", bg="orange", activebackground="orange", borderwidth=10, width=20, command= retourCatalogue ))
    if (modeAdmin):
        p.add(Button(p, text="Ajouter Extension", bg="cyan", activebackground="cyan", borderwidth=10, width=20, command=rien))
    p.add(Button(p, text="Quitter", bg="white", activebackground="black", borderwidth=10, width=10, command = fextension.destroy ))
    
    if (Jeu.aDesExtensions(idJeu)==False):
        Label(fextension, text="Pas d'extension", bg="white", width=25).grid(row=2)
    else:
        Label(fextension, text="Nom Extension", bg="red", width=30).grid(row=2, column=2) #affiche "Nom Extension" au dessus des noms
        Label(fextension, text="Nom Jeu", bg="red", width=30).grid(row=2, column=1)
        j = Jeu.getExtensions(idJeu)
        k=3
        for i in j:
            Label(fextension, text=str(Extension.getNomExtension(i[0])), bg="white", width=25).grid(row=k, column=2)
            Label(fextension, text=str(Jeu.getNomJeu(Extension.getIdJeu(i[0]))), bg="white", width=25).grid(row=k, column=1)
            Button(fextension, text="Emprunt", command = partial(lancerEmprunt, i[0]),bg="green", width=13,activebackground="green").grid(row=k, column=4)
            Button(fextension, text="Reserv", command = partial(lancerReserv, i[0]),bg="red", width=13,activebackground="red").grid(row=k, column=5)
            Label(fextension, text="Quantité disponible", bg="red", width=30).grid(row=2, column=3)
            Label(fextension, text=Extension.getNbreTotalExtension(i[0]), bg="white", width=25).grid(row=k,column=3)
            if (modeAdmin):
                Button(fextension, text="Modifier", command = rien, bg="yellow", width=13, activebackground="yellow").grid(row=k, column=6)  
                Button(fextension, text="Supprimer", command=rien, bg="yellow", width=13, activebackground="yellow").grid(row=k, column=7)
            k=k+1
            
    fextension.mainloop()
Esempio n. 8
0
    def __check_preferences_json(self, preferences):
        """Pulls Extension information out of the preferences file
        """
        extensions = []
        with open(preferences, 'rb') as f:
            prefs_json = json.load(f)

            extensions_json = prefs_json['extensions']['settings']
            for extension in extensions_json.iterkeys():
                name = None
                version = None
                if 'manifest' in extensions_json[extension]:
                    name = extensions_json[extension]['manifest']['name']
                    version = extensions_json[extension]['manifest']['version']
                #e = Extension(self.os.CHROME_NAME, name, version, None, extension)
                e = Extension(name, version, None, extension)
                extensions.append(e.todict())
        
        return extensions
Esempio n. 9
0
def supprimer_Extension(Extension):
	""" supprimer_Extension: Extension x EnsExtensions -> EnsExtensions, est_Presente_Extension(Extension.get_Nom_Extension) == True avant suppression."""
	if(est_Presente_Extension(Extension)):
		try:
			cur.execute(""" DELETE FROM EnsExtensions WHERE Extension_id = ?""", (Extension.get_Extension_id(),))
			conn.commit()
		except:
			print ("Erreur lors de la suppression de l'extension")
			raise
	else:
		print ("Impossible de supprimer une extension non présente dans la base.")
		raise
Esempio n. 10
0
def update_Extension(Extension):
	""" update_Extension: Extension -> Extension, modifie les informations d'une extension donnée """
	if (est_Presente_Extension(Extension)):
		cur.execute =(""" UPDATE EnsExtensions SET Jeu_id = ?, Nom_Extension = ?, Disponibilité = ? """, (Extension.get_Id_Jeu_Associe(), Extension.get_Nom_Extension(), Extension.get_Disponible() ))
	else:
		print "L'extension à modifier n'existe pas."
Esempio n. 11
0
def supprimer_Extension(Extension):
	try:
		cur.execute=(""" DELETE FROM EnsExtensions WHERE Extension_id = ?""", (Extension.get_Extension_id()))
		conn.commit()
	except:
		print "Erreur lors de la suppression de l'extension"
Esempio n. 12
0
def ajouter_Extension(Extension):
	""" ajouter_extension: Extension x EnsExtensions -> EnsExtensions, est_Presente_Extension(Extension.get_Nom_Extension) == False avant ajout. """
	if (not(est_Presente_Extension(Extension))):
		try:
			cur.execute=(""" INSERT INTO EnsExtensions(Extension_id, Jeu_id, Nom_Extension, Disponibilité) VALUES(?, ?, ?, ?) """, (Extension.get_Extension_id(), Extension.get_Id_Jeu_Associe(), Extension.get_Nom_Extension(), Extension.get_Disponible() ))
			conn.commit()
		except:
			print "Erreur lors de l'ajout de l'extension"

	else:
		print "L'extension est déjà présente dans la base."
Esempio n. 13
0
def est_Presente_Extension(Extension):
	""" est_Presente_Extension: Text x EnsExtensions -> Bool, True si l'extension est dans EnsExtensions, False sinon """

	cur.execute=(""" SELECT Extension_id FROM EnsExtensions WHERE Extension_id = ? """, (Extension.get_Extension_id()))
	#recupère le premier résultat correspondant à la recherche, vide sinon.
	result=cur.fetchone()
	return result != None
Esempio n. 14
0
def Ajouter_Reservation(Reservation):
	#Ajouter_Reservation : Reservation x Utilisateur x EnsReservation -> EnsReservation
	if (not(Reservation_EnCours(User))):
		try:
			cur.execute=(""" INSERT INTO EnsReservation(Reservation_id, Jeu_id, user_id, Exemplaire_id, date_Reservation) VALUES(?, ?, ?, ?, ?) """, (Reservation.get_Reservation_id(), Reservation.get_Jeu_id(), Reservation.get_user_id(), Extension.get_date_Reservation() ))
			conn.commit()
			print(" Reservation ajoutée !")
		except:
			print ("Erreur lors de l'ajout d'une reservation")

	else:
		print ("Une reservation est deja en cours " ) 
Esempio n. 15
0
def update_Extension(Extension):
	""" update_Extension: Extension -> Extension, modifie les informations d'une extension donnée """
	try:
		cur.execute(""" UPDATE EnsExtensions SET Jeu_id = ?, Nom_Extension = ?, Disponibilite = ? WHERE Extension_id = ?""", (Extension.get_Id_Jeu_Associe(), Extension.get_Nom_Extension(), Extension.get_Disponible(), Extension.get_Extension_id(),))
		print ("L'extension a bien ete mise a jour")
	except:
		raise
Esempio n. 16
0
class Preprocess:
    def __init__(self):
        self.rootTreeNode = TreeNode(-1, 0, 'ROOT')
        self.allNodes = []
        self.allTrees = []
        self.allTrees_separated = []
        self.moduleStatistic = {}
        self.extensionParse = Extension()
        self.treeNumber = 0
        self.nodeNumber = 0

    def getAllSubFiles(self, basePath):
        fileNameList = []
        fileDirPathList = []
        for dirPath, dirNames, fileNames in os.walk(basePath):
            if dirPath != basePath:
                print("Directory%s" % (dirPath))
                fileDirPathList.append(dirPath)
                for fileName in fileNames:
                    print("File%s" % fileName)
                fileNameList.append(fileNames)
        return fileDirPathList, fileNameList

    def getExtension(self, filePath):
        return self.extensionParse.getExtension(filePath)

    #@profile(precision=4)
    def extractFromFiles_Robert(self,
                                autoGenerateTree=True,
                                withCut=False,
                                withMerge=False,
                                treeNumberLimit=500,
                                nodeLimit=100):

        dirPaths, fileNames = self.getAllSubFiles('d:\\\\EADData\\feature_ex')
        readcount = 0
        OverLoad = False
        for index, dirPath in enumerate(dirPaths):
            #if dirPath=='d:\\\\EADData\\feature_ex\\nj-kevin-song1':
            # if readcount>=10:
            #     break
            if OverLoad:
                break
            for fileName in fileNames[index]:
                if re.split('_', fileName)[1] == 'link' and re.split(
                        '_', fileName)[3].startswith('iexplore'):
                    tn = 0
                    nn = 0
                    readcount += 1
                    for fileOpFile in fileNames[index]:
                        if re.split('_', fileOpFile)[1] == 'fop' and re.split(
                                '_', fileOpFile)[3] == re.split('_',
                                                                fileName)[3]:
                            print('started reading %s' % dirPath + '\\' +
                                  fileName + ' and ' + fileOpFile)
                            treeNodes = {}
                            rootNode = TreeNode(-1, 0, 'ROOT')
                            treeNodes[-1] = rootNode
                            file_open = open(dirPath + '\\' + fileName,
                                             'r',
                                             encoding='UTF-8')
                            fileOp_open = open(dirPath + '\\' + fileOpFile,
                                               'r',
                                               encoding='UTF-8')
                            fop_line = fileOp_open.readline()
                            fop_items = re.split(',', fop_line)
                            # while True:
                            #     if len(fop_items) == 5:
                            #         if fop_items[0].isdigit():
                            #             fop_items[0] = int(fop_items[0])
                            #         else:
                            #             print('wrong format:%s is not int!' % fop_items[0])
                            #             continue
                            #
                            #         if fop_items[1].isdigit():
                            #             fop_items[1] = int(fop_items[1])
                            #         else:
                            #             print('wrong format:%s is not int!' % fop_items[1])
                            #             continue
                            #     else:
                            #         print('wrong format:%s' % fop_line)
                            #         continue
                            #     break
                            fop_temp = []
                            lineCount = 0
                            opLineCount = 0
                            # for line in file_open:
                            #     if line == "\n":
                            #         continue
                            #     items = re.split(',', line)
                            #     lineCount += 1
                            #     if len(items) == 5:
                            #         if items[0].startswith('['):
                            #             items[0] = items[0].split('[')[1]
                            #         items[0]=int(items[0])
                            #         items[1] = int(items[1])
                            #         items[2] = int(items[2])
                            #         items[4] = items[4].split(']')[0]
                            items = []
                            linkID = -1
                            opID = -1
                            linkFileRead = False
                            opFileRead = False
                            for line in file_open:
                                if line == "\n":
                                    continue
                                if line == "":
                                    break
                                temp_items = re.split(',', line)
                                lineCount += 1
                                if len(temp_items) == 5:
                                    if temp_items[0].startswith('['):
                                        temp_items[0] = temp_items[0].split(
                                            '[')[1]
                                    if temp_items[0].isdigit():
                                        temp_items[0] = int(temp_items[0])
                                    else:
                                        #print('wrong format:%s is not int!' % temp_items[0])
                                        continue
                                    if temp_items[1].isdigit():
                                        temp_items[1] = int(temp_items[1])
                                    else:
                                        #print('wrong format:%s is not int!' % temp_items[1])
                                        continue
                                    if temp_items[2].isdigit():
                                        temp_items[2] = int(temp_items[2])
                                    else:
                                        #print('wrong format:%s is not int!' % temp_items[2])
                                        continue
                                    temp_items[4] = temp_items[4].split(']')[0]
                                else:
                                    #print('wrong format:%s' % line)
                                    continue
                                items = temp_items
                                if items[0] not in treeNodes.keys():
                                    node = ModuleInstance(
                                        items[0], int(items[1]), items[4],
                                        [0 for index in range(8)], items[2])
                                    if items[4] not in self.moduleStatistic:
                                        ms = ModuleStatistic(items[4])
                                        self.moduleStatistic[items[4]] = ms
                                    self.moduleStatistic[items[4]].count += 1
                                    treeNodes[items[0]] = node
                            node = None
                            oldID = -1
                            oldErrorModuleID = -1
                            for line in fileOp_open:
                                if line == "\n":
                                    continue
                                if line == "":
                                    break
                                temp_items = re.split(',', line)
                                lineCount += 1
                                if len(temp_items) == 5:
                                    if temp_items[0].startswith('['):
                                        temp_items[0] = temp_items[0].split(
                                            '[')[1]
                                    if temp_items[0].isdigit():
                                        temp_items[0] = int(temp_items[0])
                                    else:
                                        print('wrong format:%s is not int!' %
                                              temp_items[0])
                                        continue
                                    if temp_items[1].isdigit():
                                        temp_items[1] = int(temp_items[1])
                                        if temp_items[1] not in OpTypeMap.keys(
                                        ):
                                            #print('wrong value:%s is illegal !' % temp_items[1])
                                            continue
                                    else:
                                        print('wrong format:%s is not int!' %
                                              temp_items[0])
                                        continue
                                    if temp_items[2].isdigit():
                                        temp_items[2] = int(temp_items[2])
                                    else:
                                        print('wrong format:%s is not int!' %
                                              temp_items[2])
                                        continue
                                    temp_items[4] = temp_items[4].split(']')[0]
                                else:
                                    print('wrong format:%s' % line)
                                    continue
                                items = temp_items
                                if (items[0] == oldID):
                                    node.opCount[OpTypeMap[items[1]]] += 1
                                    if self.getExtension(items[3]) not in \
                                            self.moduleStatistic[node.name].extensionDict[
                                                OpTypeMap[items[1]]].keys():
                                        self.moduleStatistic[
                                            node.name].extensionDict[OpTypeMap[
                                                items[1]]][self.getExtension(
                                                    items[3])] = 1
                                    else:
                                        self.moduleStatistic[
                                            items[4]].extensionDict[OpTypeMap[
                                                items[1]]][self.getExtension(
                                                    items[3])] += 1
                                    if self.getExtension(
                                            items[3]
                                    ) not in node.extensionDict[OpTypeMap[
                                            items[1]]].keys():
                                        node.extensionDict[OpTypeMap[
                                            items[1]]][self.getExtension(
                                                items[3])] = 1
                                    else:
                                        node.extensionDict[OpTypeMap[
                                            items[1]]][self.getExtension(
                                                items[3])] += 1
                                else:
                                    if items[0] in treeNodes.keys():
                                        node = treeNodes[items[0]]
                                        node.opCount[OpTypeMap[items[1]]] += 1
                                        if self.getExtension(items[3]) not in \
                                                self.moduleStatistic[node.name].extensionDict[
                                                    OpTypeMap[items[1]]].keys():
                                            self.moduleStatistic[
                                                node.name].extensionDict[
                                                    OpTypeMap[items[1]]][
                                                        self.getExtension(
                                                            items[3])] = 1
                                        else:
                                            self.moduleStatistic[
                                                node.name].extensionDict[
                                                    OpTypeMap[items[1]]][
                                                        self.getExtension(
                                                            items[3])] += 1
                                        if self.getExtension(
                                                items[3]
                                        ) not in node.extensionDict[OpTypeMap[
                                                items[1]]].keys():
                                            node.extensionDict[OpTypeMap[
                                                items[1]]][self.getExtension(
                                                    items[3])] = 1
                                        else:
                                            node.extensionDict[OpTypeMap[
                                                items[1]]][self.getExtension(
                                                    items[3])] += 1
                                    else:
                                        if items[0] != oldErrorModuleID:
                                            #print('Cant find %d module' %items[0])
                                            oldErrorModuleID = items[0]

                            # linkFileRead, items,lineCount = self.getLinkLine(file_open,items, lineCount)
                            # node = None
                            # if linkFileRead==False:
                            #     print("Link File error %s"%fileName)
                            #     continue
                            # else:
                            #     if items[0] not in treeNodes.keys():
                            #         node = ModuleInstance(items[0], int(items[1]), items[4],
                            #                               [0 for index in range(8)], items[2])
                            #         if items[4] not in self.moduleStatistic:
                            #             ms = ModuleStatistic(items[4])
                            #             self.moduleStatistic[items[4]] = ms
                            #         self.moduleStatistic[items[4]].count += 1
                            #         treeNodes[items[0]] = node
                            #         linkID = items[0]
                            #
                            #
                            # opFileRead, fop_items,opLineCount = self.getOpFileLine(fileOp_open,fop_items,opLineCount)
                            # if linkFileRead==False:
                            #     print("Op File error %s"%fileOpFile)
                            # else:
                            #     opID = fop_items[0]
                            #
                            # while True:
                            #     newRecord=False
                            #     if (linkID==-1 or linkID<opID) and linkFileRead == True:
                            #         linkFileRead,items,lineCount=self.getLinkLine(file_open,items,lineCount)
                            #         if items[0] not in treeNodes.keys():
                            #             node = ModuleInstance(items[0], int(items[1]), items[4],[0 for index in range(8)],items[2])
                            #             if items[4] not in self.moduleStatistic.keys():
                            #                 ms=ModuleStatistic(items[4])
                            #                 self.moduleStatistic[items[4]] = ms
                            #             self.moduleStatistic[items[4]].count += 1
                            #             treeNodes[items[0]] = node
                            #             newRecord = True
                            #     if (opID == -1 or linkID>=opID) and opFileRead == True:
                            #         opFileRead,fop_items,opLineCount=self.getOpFileLine(fileOp_open,fop_items,opLineCount)
                            #         newRecord=opFileRead
                            #     if (linkFileRead or opFileRead) !=True:
                            #         break
                            #     if ((lineCount + opLineCount) % 100 == 0):
                            #         print(".", end="")
                            #
                            #     if newRecord:
                            #         linkID = items[0]
                            #         opID = fop_items[0]
                            #         if linkID==opID:
                            #             node.opCount[OpTypeMap[fop_items[1]]] += 1
                            #             if self.getExtension(fop_items[3]) not in self.moduleStatistic[items[4]].extensionDict[OpTypeMap[fop_items[1]]].keys():
                            #                 self.moduleStatistic[items[4]].extensionDict[
                            #                 OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] = 1
                            #             else:
                            #                 self.moduleStatistic[items[4]].extensionDict[
                            #                     OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] += 1
                            #             if self.getExtension(fop_items[3]) not in node.extensionDict[
                            #                 OpTypeMap[fop_items[1]]].keys():
                            #                 node.extensionDict[OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] = 1
                            #             else:
                            #                 node.extensionDict[OpTypeMap[fop_items[1]]][
                            #                     self.getExtension(fop_items[3])] += 1
                            #         if linkID>opID:
                            #             fop_temp.append(fop_items[:])
                            #         if linkID<opID:
                            #             continue
                            #
                            #
                            #
                            #
                            #
                            #         # if items[0]<fop_items[0]:
                            #         #     continue
                            #         # if items[0] > fop_items[0]:
                            #         #     fop_temp.append(fop_items[:])
                            #             #raise Exception('Fop check failed!File:%s Line:%d \n\t%s,%d,%d' % (
                            #             #        dirPaths[index] + '\\' + fileName, lineCount, line, items[0],fop_items[0]))
                            #
                            #         # while items[0]==fop_items[0] or fop_line=='':
                            #         #     node.opCount[OpTypeMap[fop_items[1]]]+=1
                            #         #     if self.getExtension(fop_items[3]) not in self.moduleStatistic[items[4]].extensionDict[OpTypeMap[fop_items[1]]].keys():
                            #         #         self.moduleStatistic[items[4]].extensionDict[
                            #         #             OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] =1
                            #         #     else:
                            #         #         self.moduleStatistic[items[4]].extensionDict[
                            #         #             OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] += 1
                            #         #     if self.getExtension(fop_items[3]) not in node.extensionDict[OpTypeMap[fop_items[1]]].keys():
                            #         #         node.extensionDict[OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] =1
                            #         #     else:
                            #         #         node.extensionDict[OpTypeMap[fop_items[1]]][self.getExtension(fop_items[3])] += 1
                            #         #     fop_line = fileOp_open.readline()
                            #         #     if fop_line=='':
                            #         #         break
                            #         #     fop_items = re.split(',', fop_line)
                            #         #
                            #         #     if len(fop_items)==5:
                            #         #         if fop_items[0].isdigit():
                            #         #             fop_items[0]=int(fop_items[0])
                            #         #         else:
                            #         #             print('wrong format:%s is not int!'%fop_items[0])
                            #         #         if fop_items[1].isdigit():
                            #         #             fop_items[1] = int(fop_items[1])
                            #         #         else:
                            #         #             print('wrong format:%s is not int!' % fop_items[1])
                            #         #     else:
                            #         #         print('wrong format:%s'%fop_line)
                            #         #     continue
                            #
                            #
                            # for fop_rec in fop_temp:
                            #     if fop_rec[0] in treeNodes.keys():
                            #         treeNodes[fop_rec[0]].opCount[OpTypeMap[fop_items[1]]] += 1
                            #
                            #         if self.getExtension(fop_rec[3]) not in self.moduleStatistic[treeNodes[fop_rec[0]].name].extensionDict[OpTypeMap[fop_rec[1]]].keys():
                            #             self.moduleStatistic[treeNodes[fop_rec[0]].name].extensionDict[
                            #                 OpTypeMap[fop_rec[1]]][self.getExtension(fop_rec[3])] = 1
                            #         else:
                            #             self.moduleStatistic[treeNodes[fop_rec[0]].name].extensionDict[
                            #                 OpTypeMap[fop_rec[1]]][self.getExtension(fop_rec[3])] += 1
                            #         if self.getExtension(fop_rec[3]) not in treeNodes[fop_rec[0]].extensionDict[
                            #             OpTypeMap[fop_rec[1]]].keys():
                            #             treeNodes[fop_rec[0]].extensionDict[OpTypeMap[fop_rec[1]]][self.getExtension(fop_rec[3])] = 1
                            #         else:
                            #             treeNodes[fop_rec[0]].extensionDict[OpTypeMap[fop_rec[1]]][
                            #                 self.getExtension(fop_rec[3])] += 1
                            #     else:
                            #         print('Cant find %d module'%fop_rec[0])

                            file_open.close()
                            fileOp_open.close()
                            trees = []
                            if autoGenerateTree:
                                for nodeIndex in treeNodes:
                                    treeNodes[nodeIndex].findParent(treeNodes)
                                for node in rootNode.children:
                                    tree = Tree(node)
                                    trees.append(tree)
                                    #print("tree refcount append:%d" % sys.getrefcount(tree))

                                # print('sleep begin!')
                                # time.sleep(10)
                                # print('sleep end!')
                                for t in trees[:]:
                                    #print("tree refcount before:%d" % sys.getrefcount(t))
                                    t.root.getSubTreeOpCount()
                                    t.root.cutNode()
                                    if t.root.cutCheck():
                                        trees.remove(t)
                                        #print("tree refcount after:%d"%sys.getrefcount(t))
                                        del t
                                treeNodes.clear()
                                rootNode = TreeNode(-1, 0, 'ROOT')
                                treeNodes[-1] = rootNode
                                for t in trees[:]:

                                    t.getTreeNodes()
                                    if t.nodesCount >= nodeLimit:
                                        trees.remove(t)
                                        continue
                                    tn += 1
                                    nn += t.nodesCount
                                    for node in t.nodes:
                                        treeNodes[node.ID] = node
                                print('\t%d lines in %s' %
                                      (lineCount, fileName))
                                self.allNodes.append(treeNodes)
                                if self.treeNumber + tn >= treeNumberLimit:
                                    self.allTrees.append(
                                        trees[:treeNumberLimit -
                                              self.treeNumber])
                                    self.treeNumber = treeNumberLimit
                                    OverLoad = True
                                else:
                                    self.allTrees.append(trees)
                                    self.treeNumber += tn
                                self.nodeNumber += nn
                            #if withMerge==True:

                            #print('\t%d lines in %s' % (lineCount, fileName))
                            print("tree number:%d\nnode number:%d" % (tn, nn))
                            print(
                                "Total tree number:%d\nTotal node number:%d" %
                                (self.treeNumber, self.nodeNumber))
                if self.treeNumber >= treeNumberLimit:
                    OverLoad = True
                    break
                    # print('sleep begin!')
                    # time.sleep(10)
                    # print('sleep end!')
        print("Total tree number:%d\nTotal node number:%d" %
              (self.treeNumber, self.nodeNumber))
        self.extensionParse.unknowOutput()

    def getLinkLine(self, linkFile, items, lineCount):
        readSuccess = True
        while True:
            line = linkFile.readline()
            if line == "\n":
                continue
            if line == "":
                readSuccess = False
                break
            temp_items = re.split(',', line)
            lineCount += 1
            if len(temp_items) == 5:
                if temp_items[0].startswith('['):
                    temp_items[0] = temp_items[0].split('[')[1]
                if temp_items[0].isdigit():
                    temp_items[0] = int(temp_items[0])
                else:
                    #print('wrong format:%s is not int!' %temp_items[0])
                    continue
                if temp_items[1].isdigit():
                    temp_items[1] = int(temp_items[1])
                else:
                    #print('wrong format:%s is not int!' %temp_items[1])
                    continue
                if temp_items[2].isdigit():
                    temp_items[2] = int(temp_items[2])
                else:
                    #print('wrong format:%s is not int!' %temp_items[2])
                    continue
                temp_items[4] = temp_items[4].split(']')[0]
            else:
                #print('wrong format:%s' % line)
                continue
            items = temp_items
            break
        return readSuccess, items, lineCount

    def getOpFileLine(self, OpFile, items, lineCount):
        readSuccess = True
        while True:
            line = OpFile.readline()
            if line == "\n":
                continue
            if line == "":
                readSuccess = False
                break
            temp_items = re.split(',', line)
            lineCount += 1
            if len(temp_items) == 5:
                if temp_items[0].startswith('['):
                    temp_items[0] = temp_items[0].split('[')[1]
                if temp_items[0].isdigit():
                    temp_items[0] = int(temp_items[0])
                else:
                    #print('wrong format:%s is not int!' %temp_items[0])
                    continue
                if temp_items[1].isdigit():
                    temp_items[1] = int(temp_items[1])
                    if temp_items[1] not in OpTypeMap.keys():
                        #print('wrong value:%s is illegal !' % temp_items[1])
                        continue
                else:
                    #print('wrong format:%s is not int!' %temp_items[0])
                    continue
                if temp_items[2].isdigit():
                    temp_items[2] = int(temp_items[2])
                else:
                    #print('wrong format:%s is not int!' %temp_items[2])
                    continue
                temp_items[4] = temp_items[4].split(']')[0]
            else:
                #print('wrong format:%s' % line)
                continue
            items = temp_items
            break
        return readSuccess, items, lineCount

    def getAllNodes(self, dataBasePaths):

        for path in dataBasePaths:

            treeNodes = {}
            treeNodes[-1] = self.rootTreeNode
            # treeNodes.append(self.rootTreeNode)
            conn = sqlite3.connect(path)
            print("Opened database successfully")

            cursor = conn.execute(
                "select ModuleID,ParentID,FileName,FileChangeCount,FileOpenCount,RegOpCount,"
                "NetworkConnectionCount from TModuleCount;")
            for index, row in enumerate(cursor):
                mi = ModuleInstance(row[0], row[1], row[2],
                                    [row[3], row[4], row[5], row[6]])
                #treeNodes.append(mi)
                treeNodes[row[0]] = mi
                if index % 100000 == 0:
                    print("%d nodes get\n" % index)
            conn.close()
            self.allNodes.append(treeNodes)
        return self.allNodes

    def generateTrees(self):
        for nodeDict in self.allNodes:
            for nodeIndex in nodeDict:
                nodeDict[nodeIndex].findParent(nodeDict)
        for node in self.rootTreeNode.children:
            for treeRoot in node.children:
                t = Tree(treeRoot)
                self.allTrees.append(t)
        return self.allTrees

    def nodesPruning(self, merge, cut):
        print("%d trees" % len(self.allTrees))
        if cut:
            tn = 0
            for t in self.allTrees[:]:
                t.root.getSubTreeOpCount()

                t.root.cutNode()
                tn += 1
                if t.root.cutCheck():
                    self.allTrees.remove(t)
            print("%d callCount with %d trees %d" %
                  (ModuleInstance.callCount, tn, len(self.allTrees)))
        if merge:
            for t in self.allTrees:
                ##try:
                t.root.merge()
            ##except:
            ##print("for error")

    def treesFinalSettle(self):
        #self.allNodes[0].ID=0
        #newAllNodes = [self.allNodes[0]]
        #idConvetor = {-1:0}
        self.allNodes = []
        for trees in self.allTrees:
            nodes = []
            for t in trees:
                t.orderTreeNodes()
                t.getTreeNodes()
                t.root.parentID = -1
                nodes.append(t.nodes)
            self.allNodes.append(nodes)
	def show(self, optList, optActive):
		showList 	= {}
		activeExt 	= []

		#get active extensions
		exStatus = ExtensionStatus()
		activeExt = exStatus.activeExtensions()
		
		#get system wide extensions
		for fn in listdir('/usr/share/gnome-shell/extensions/'):
			json_data=open('/usr/share/gnome-shell/extensions/'+fn+"/metadata.json")
			extension = Extension(json_data.read())
			extension.install = 'System'

			if(optActive):
				if(extension.getUuid() in activeExt):
					showList[extension.getName()] = extension
			else:
				showList[extension.getName()] = extension

		#get user
		user = None
		if(Config.user == "root" and Config.sudoUser != None):
			user = Config.sudoUser
		else:
			user = Config.user

		#get user extensions
		userDir = '/home/'+user+'/.local/share/gnome-shell/extensions/'
		for fn in listdir(userDir):
			json_data=open(userDir+fn+"/metadata.json")
			extension = Extension(json_data.read())

			if(extension.getName() in showList):
				showList[extension.getName()].install += ', User' 
				continue
			extension.install = 'User'
			if(optActive):
				if(extension.getUuid() in activeExt):
					showList[extension.getName()] = extension
			else:
				showList[extension.getName()] = extension
		
		for ex in sorted(showList):
			
			if(showList[ex].getUuid() in activeExt):
				display( "*"+ex )
			else:
				display( ex )
			if(optList):
				display( "Location:\t"+showList[ex].install )
				display( "UUID:    \t"+showList[ex].getUuid())
				display( "Description:\t"+showList[ex].getDescription())
				display("---")
class ReadPredictFile:
    def __init__(self):
        self.allTreeNodes = []
        self.allTrees = []
        self.extensionParse = Extension()
        return

    def getExtension(self, filePath):
        return self.extensionParse.getExtension(filePath)

    def getAllSubFiles(self, basePath):
        fileNameList = []
        fileDirPathList = []
        for dirPath, dirNames, fileNames in os.walk(basePath):
            print("Directory%s" % (dirPath))
            fileDirPathList.append(dirPath)
            for fileName in fileNames:
                print("File%s" % fileName)
            fileNameList.append(fileNames)
        return fileDirPathList, fileNameList

    def fileToTree(self):
        dirPaths, fileNames = self.getAllSubFiles(
            'd:\\EADData\\data_to_train_all_data')
        readcount = 0

        for index, dirPath in enumerate(dirPaths):
            for fileName in fileNames[index]:
                #if not fileName.startswith("nj-albert-ji_iexplore_train"):
                #    continue
                if readcount > 5:
                    break
                readcount += 1
                fileOpen = open(dirPath + '\\' + fileName,
                                'r',
                                encoding='UTF-8')
                print('Reading %s' % (dirPath + '\\' + fileName))
                emptyLineCount = 0
                Trees = []
                modulefileOpList = []
                moduleChain = []
                modulelist = []
                totalFileOplist = []
                readChain = True
                ID = 0
                for line in fileOpen:
                    if line == "" or line == "\n":
                        emptyLineCount += 1
                        readChain = True
                        if emptyLineCount == 1:
                            modulelist.append(moduleChain)
                            totalFileOplist.append(modulefileOpList)
                            moduleChain = []
                            modulefileOpList = []
                        if emptyLineCount == 2:
                            module = ModuleInstance(ID, -1, 'iexplore.exe',
                                                    [0 for index in range(8)],
                                                    3)
                            tree = Tree(module)
                            Trees.append(tree)
                            ID += 1

                            for index1, mc in enumerate(modulelist):
                                temp = module
                                for m in mc[::-1]:
                                    check = False
                                    for tempchild in temp.children:
                                        if tempchild.name == m:
                                            check = True
                                            temp = tempchild
                                            break
                                    if check:
                                        continue
                                    else:
                                        newmodule = ModuleInstance(
                                            ID, temp.ID, m,
                                            [0 for index in range(8)], 3)
                                        ID += 1
                                        temp.children.append(newmodule)
                                        newmodule.parent = temp
                                        temp = newmodule
                                for fileOp in totalFileOplist[index1]:
                                    temp.opCount[OpTypeMap[
                                        fileOp['OpType']]] += 1
                                    if self.getExtension(
                                            fileOp['filepath']
                                    ) not in temp.extensionDict[OpTypeMap[
                                            fileOp['OpType']]].keys():
                                        temp.extensionDict[OpTypeMap[fileOp[
                                            'OpType']]][self.getExtension(
                                                fileOp['filepath'])] = 1
                                    else:
                                        temp.extensionDict[OpTypeMap[fileOp[
                                            'OpType']]][self.getExtension(
                                                fileOp['filepath'])] += 1
                            modulefileOpList = []
                            moduleChain = []
                            modulelist = []
                            totalFileOplist = []
                        continue
                    if readChain:
                        modules = re.split(',', line)
                        moduleChain = []
                        for module in modules[:len(modules) - 1]:
                            ss = re.split('\\\\', module)
                            moduleName = ss[len(ss) - 1]
                            moduleChain.append(moduleName)
                        readChain = False
                        emptyLineCount = 0
                    else:
                        ss = re.split(',', line)
                        if ss[1] == '1':
                            modulefileOpList.append({
                                'filepath': ss[3],
                                'OpType': int(ss[2])
                            })
                        emptyLineCount = 0
                        ###
                if len(modulelist) != 0:
                    module = ModuleInstance(ID, -1, 'iexplore.exe',
                                            [0 for index in range(8)], 3)
                    tree = Tree(module)
                    Trees.append(tree)
                    ID += 1

                    for index1, mc in enumerate(modulelist):
                        temp = module
                        for m in mc[::-1]:
                            check = False
                            for tempchild in temp.children:
                                if tempchild.name == m:
                                    check = True
                                    temp = tempchild
                                    break
                            if check:
                                continue
                            else:
                                newmodule = ModuleInstance(
                                    ID, temp.ID, m, [0 for index in range(8)],
                                    3)
                                ID += 1
                                temp.children.append(newmodule)
                                newmodule.parent = temp
                                temp = newmodule
                        for fileOp in totalFileOplist[index1]:
                            temp.opCount[OpTypeMap[fileOp['OpType']]] += 1
                            if self.getExtension(
                                    fileOp['filepath']
                            ) not in temp.extensionDict[OpTypeMap[
                                    fileOp['OpType']]].keys():
                                temp.extensionDict[OpTypeMap[
                                    fileOp['OpType']]][self.getExtension(
                                        fileOp['filepath'])] = 1
                            else:
                                temp.extensionDict[OpTypeMap[
                                    fileOp['OpType']]][self.getExtension(
                                        fileOp['filepath'])] += 1
                fileOpen.close()
                for t in Trees[:]:
                    # print("tree refcount before:%d" % sys.getrefcount(t))
                    t.root.getSubTreeOpCount()
                    t.root.cutNode()
                    if t.root.cutCheck():
                        Trees.remove(t)
                        # print("tree refcount after:%d"%sys.getrefcount(t))
                        del t
                for t in Trees[:]:
                    t.getTreeNodes()
                self.allTrees.append(Trees)
Esempio n. 19
0
def formulaireExt(idExt = -1, idJeu = 0): #Par défaut, idExt =-1 => creation
    """Prend l'id d'une extension pour la modifier, ou -1 pour en creer une nouvelle"""
    
    FE = Tk()
    FE.title("Formulaire d'extension")
    FE.wm_attributes("-topmost" , -1) #Mets la fenetre au premier plan dès son apparition.
    idE = IntVar()
    idE.set(idExt)
    Creation = BooleanVar()            #Les variables declarée comme ceci semble être utilisable pour les fonctions imbriqué de Tkinter
    Creation.set(False)
    idJ = IntVar()
    idJ.set(idJeu)
    if idE.get() < 0 : #Cas de creation du Ext, valeur par defaut.
        NomJeuE = Jeu.getNomJeu(idJeu)
        nomE="Nom de l'extension"
        quantiteE=0
        Creation.set(True)
    else : #Extension existant, recuperation, des infos
        NomJeuE = Jeu.getNomJeu(idJeu)
        nomE=Extension.getNomExt(idE.get())
        quantiteE=Ext.getQuantiteExt(idE.get())
    
    def submit(): #Fonction de confirmation DANS la fonction de fenetre.
        if askyesno("Confirmation", "Enregister L'extension ?"):
            FE.quit()
            if Creation.get():
                Extension.ajoutExtension(idJ.get(),nomExt.get(),quantiteExt.get())
            else :
                Extension.setNomExt(idE.get(),nomExt.get())
                Ext.setQuantiteExt(idE.get(),quantiteExt.get())
            return FE.destroy() #Ferme après avoir enregistre.
        else : return

    def cancel(): #Ferme la fenetre
        if askyesno("Quitter", "Annuler le formulaire ?"):
            FE.quit() #Ferme la fenetre
            return FE.destroy() #N'enregistre rien
        else : return
    T1 = LabelFrame(FE, text="Formulaire de l'extension :")
    NJE = Label(FE, text="Nom du jeu de l'extension :")
    NE = Label(FE, text="Nom de l'extension :")
    QE = Label(FE, text="Nombre d'exemplaire total de l'extension :")
    AddE = Label(FE, text="Ajouter l'extension :")
    #Titre
    T1.pack()
    #Nom du jeu (recupère l'id du jeu dans la liste)
    NJE.pack()
    NomJeu = Label(FE, text =Jeu.getNomJeu(idJeu))
    NomJeu.pack() 
    #Nom de l'extension (champs à remplir)
    NE.pack()
    nomExt = StringVar()
    nomExt.set(nomE)
    NEI = Entry(FE,textvariable=nomExt,width=40)
    NEI.pack()
    #Quantite d'exemplaire de l'extension (gradutation)
    QE.pack()
    quantiteExt = IntVar()
    quantiteExt.set(quantiteE)
    QEI = Spinbox(FE, from_=0, to=999, textvariable=quantiteExt)
    QEI.pack()
    #Fin : Confirmation de l'ajout/modification du extension, appel de la fonction submit (sans parenthèses)
    AddE.pack()
    AddEI = Button(FE, text="Confirmer", command = submit)
    AddEI.pack()
    #Fin : Annulation.(marche pas encore)
    Cancel = Button(FE, text="Annuler", command = cancel)
    Cancel.pack()
    #Lancement de la fenetre
    FE.mainloop()
 def __init__(self):
     self.allTreeNodes = []
     self.allTrees = []
     self.extensionParse = Extension()
     return