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
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 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
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
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()
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
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
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."
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"
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."
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
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 " )
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
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)
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