lock=threading.RLock()# doufam, ze kdyz je lock tady, ze je funknci. Closure...? XX nejak otestovat
myDB:None
lock=threading.RLock()# doufam, ze kdyz je lock tady, ze je funknci. Closure...? XX nejak otestovat
THUMBNAIL_SIZE=640,640
MAX_WHOIS_DOMAIN_THREADS=10# spusti maximalne 10 threadu doraz, jednou mi to totiz preteklo (kazda domena spusti jeste tolik threadu, kolik ma IP, ale tech byva jen par)
MAX_BROWSER_EXPIRATION=15# pocet vterin, ktere muzeme max cekat, nez se browser zavre (trva, nez zapise soubory)
MAX_WHOIS_DOMAIN_THREADS=10# spusti maximalne 10 threadu doraz, jednou mi to totiz preteklo (kazda domena spusti jeste tolik threadu, kolik ma IP, ale tech byva jen par)
MAX_BROWSER_RUN_TIME=25# maximum time for a browser to run
MAX_BROWSER_EXPIRATION=15# seconds that we wait before killing the browser (waiting for the files to be written)
defconnect():
# XX resim problem peewee.OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))") po 7 hodinach timeoutu
# XX kupodivu pripojeni nemuze byt v dbp DBModel.connect. Prestoze type je pak spravne (MySQLDatabase), nic udelat nejde a pokusy o select konci NoneType.
logging.debug("Connecting to DB.")
Config.myDB=MySQLDatabase("mdmaug",host='localhost',port=3306,user="mdmaug",passwd="fidFDSs676")# XX dal jsem pryc: , threadlocals=False
# @param cached Pokud chceme zobrazit cachovanou verzi analyzy, dejme True. Pokud dame int, je to maximalni stari (ve dnech). Kdyz se nenalezne, zanazyzuje se znovu.
withopen(logDir+ScanController.FF_INFO_FILE,"w")asf:# v logDiru mu dame odkaz do cacheDiru
f.write(cacheDir)#napoveda, kde FF najde cache dir (protoze FF najde log dir podle nazvu profilu)
withopen(logDir+ScanController.FF_INFO_FILE,"w")asf:# v logDiru mu dame odkaz do cacheDiru
f.write(cacheDir)# napoveda, kde FF najde cache dir (protoze FF najde log dir podle nazvu profilu)
returnlogDir,cacheDir
def_loadProfileQueue(self):
#load queue from config file
#load queue from config file
try:
withopen(Config.configFile,'r')asf:
self.queueFF=json.load(f)
...
...
@@ -159,16 +153,17 @@ class ScanController:
self.queueFF={}
defbookProfile(self):
#zabookovat profil firefoxu
#zabookovat profil firefoxu
self.queueFF[self.profile]="loading"
withopen(Config.configFile,'w')asf:
json.dump(self.queueFF,f)
defunbookProfile(self):
defdump():
withopen(Config.configFile,'w')asf:
json.dump(self.queueFF,f)
#logging.debug("UNKBOOK")
withopen(Config.configFile,'w')asf:
json.dump(self.queueFF,f)
# logging.debug("UNKBOOK")
try:
self.queueFF.pop(self.profile)
dump()
...
...
@@ -177,33 +172,33 @@ class ScanController:
logging.debug(self.queueFF)
raise
exceptOSError:
logging.debug("({}) OS Error - interferuje s pustenym FF, ktere zere prilis pameti. Zkusime pockat.".format(self.profile))
time.sleep(10)# XX jestli funkcionalitu zachovat, dat sem pocitadlo, at je na konzoli videt akce
logging.debug(
"({}) OS Error - interferuje s pustenym FF, ktere zere prilis pameti. Zkusime pockat.".format(self.profile))
time.sleep(10)# XX jestli funkcionalitu zachovat, dat sem pocitadlo, at je na konzoli videt akce
try:
dump()
exceptOSError:
logging.debug("({}) System se nezotavil.".format(self.profile))
return"Memory may be exhausted. See mdmaug-server/scan_controller.py for details."# FF sezral vsechnu pamet asi. Stranka je problematicka. UrlQuery podle me taky selze.
#logging.debug("UNKBOOKED")
return"Memory may be exhausted. See mdmaug-server/scan_controller.py for details."# FF sezral vsechnu pamet asi. Stranka je problematicka. UrlQuery podle me taky selze.
# logging.debug("UNKBOOKED")
defqueue(self):
""" Reads from queue.cache what profile is available and books it """