@@ -132,6 +132,45 @@ def check_prince(self):
132132 os .rmdir ("temp" )
133133 logging .debug ("PRINCE downloaded and extracted" )
134134 return True
135+
136+ def check_preprocessor (self , task ):
137+ logging .debug ("Checking if requested preprocessor is present..." )
138+ path = "preprocessor/" + str (task .get_task ()['preprocessor' ]) + "/"
139+ query = copy_and_set_token (dict_downloadBinary , self .config .get_value ('token' ))
140+ query ['type' ] = 'preprocessor'
141+ query ['preprocessorId' ] = task .get_task ()['preprocessor' ]
142+ req = JsonRequest (query )
143+ ans = req .execute ()
144+ if ans is None :
145+ logging .error ("Failed to load preprocessor settings!" )
146+ sleep (5 )
147+ return False
148+ elif ans ['response' ] != 'SUCCESS' or not ans ['url' ]:
149+ logging .error ("Getting preprocessor settings failed: " + str (ans ))
150+ sleep (5 )
151+ return False
152+ else :
153+ task .set_preprocessor (ans )
154+ if os .path .isdir (path ): # if it already exists, we don't need to download it
155+ logging .debug ("Preprocessor is already downloaded" )
156+ return True
157+ logging .debug ("Preprocessor not found, download..." )
158+ if not Download .download (ans ['url' ], "temp.7z" ):
159+ logging .error ("Download of preprocessor failed!" )
160+ sleep (5 )
161+ return False
162+ if Initialize .get_os () == 1 :
163+ os .system ("7zr" + Initialize .get_os_extension () + " x -otemp temp.7z" )
164+ else :
165+ os .system ("./7zr" + Initialize .get_os_extension () + " x -otemp temp.7z" )
166+ for name in os .listdir ("temp" ): # this part needs to be done because it is compressed with the main subfolder of prince
167+ if os .path .isdir ("temp/" + name ):
168+ os .rename ("temp/" + name , path )
169+ break
170+ os .unlink ("temp.7z" )
171+ os .rmdir ("temp" )
172+ logging .debug ("Preprocessor downloaded and extracted" )
173+ return True
135174
136175 def check_version (self , cracker_id ):
137176 path = "crackers/" + str (cracker_id ) + "/"
0 commit comments