mirror of
https://github.com/dbarzin/pandora-box.git
synced 2025-07-22 14:59:41 +02:00
work in progress
This commit is contained in:
parent
1052b54dc7
commit
145ebb41a0
1 changed files with 56 additions and 47 deletions
103
pandorabox.py
103
pandorabox.py
|
@ -18,9 +18,9 @@ import time
|
||||||
# -----------------------------------------------------------
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
NO_SCAN = True
|
NO_SCAN = True
|
||||||
USB_AUTO_MOUNT = True
|
USB_AUTO_MOUNT = False
|
||||||
PANDORA_ROOT_URL = "http://127.0.0.1:6100"
|
PANDORA_ROOT_URL = "http://127.0.0.1:6100"
|
||||||
FAKE_SCAN = True
|
FAKE_SCAN = False
|
||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
|
|
||||||
|
@ -223,12 +223,19 @@ def mount_device(device):
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
res = os.system("pmount " + device.device_node + " box")
|
res = os.system("pmount " + device.device_node + " /media/box")
|
||||||
if res == 1:
|
found = False
|
||||||
return "/media/box"
|
loop = 0
|
||||||
else:
|
while (not found) and (loop < 10):
|
||||||
return ""
|
time.sleep(1)
|
||||||
|
try:
|
||||||
|
statvfs=os.statvfs(mount_point)
|
||||||
|
except Exception as e :
|
||||||
|
loop +=1
|
||||||
|
continue
|
||||||
|
break;
|
||||||
log("Device mounted at /media/box")
|
log("Device mounted at /media/box")
|
||||||
|
return "/media/box"
|
||||||
|
|
||||||
|
|
||||||
"""Unmount USB device"""
|
"""Unmount USB device"""
|
||||||
|
@ -261,7 +268,8 @@ def device_loop():
|
||||||
try:
|
try:
|
||||||
statvfs=os.statvfs(mount_point)
|
statvfs=os.statvfs(mount_point)
|
||||||
except Exception as e :
|
except Exception as e :
|
||||||
logging.error("Unexpected error: ", e)
|
log("Unexpected error1: %s" % e)
|
||||||
|
logging.exception("An exception was thrown!")
|
||||||
continue
|
continue
|
||||||
print_size(human_readable_size(statvfs.f_frsize * statvfs.f_blocks))
|
print_size(human_readable_size(statvfs.f_frsize * statvfs.f_blocks))
|
||||||
print_used(human_readable_size(statvfs.f_frsize * (statvfs.f_blocks - statvfs.f_bfree)))
|
print_used(human_readable_size(statvfs.f_frsize * (statvfs.f_blocks - statvfs.f_bfree)))
|
||||||
|
@ -294,7 +302,8 @@ def device_loop():
|
||||||
umount_device()
|
umount_device()
|
||||||
update_bar(0)
|
update_bar(0)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log("Unexpected error: %s" % e )
|
log("Unexpected error2: %s" % e )
|
||||||
|
logging.exception("An exception was thrown!")
|
||||||
finally:
|
finally:
|
||||||
log("Done.")
|
log("Done.")
|
||||||
|
|
||||||
|
@ -325,47 +334,46 @@ def log_device_info(dev):
|
||||||
"""Scan a mount point with Pandora"""
|
"""Scan a mount point with Pandora"""
|
||||||
def scan(mount_point, used):
|
def scan(mount_point, used):
|
||||||
global infected_filed
|
global infected_filed
|
||||||
infected_files = array()
|
infected_files = []
|
||||||
scanned = 0
|
scanned = 0
|
||||||
file_count = 0
|
file_count = 0
|
||||||
scan_start_time = time.time()
|
scan_start_time = time.time()
|
||||||
if FAKE_SCAN:
|
if not FAKE_SCAN:
|
||||||
for root, dirs, files in os.walk(mount_point):
|
pandora = pypandora.PyPandora(root_url=PANDORA_ROOT_URL)
|
||||||
for file in files:
|
for root, dirs, files in os.walk(mount_point):
|
||||||
try :
|
for file in files:
|
||||||
full_path = os.path.join(root,file)
|
try :
|
||||||
file_size = os.path.getsize(full_path)
|
full_path = os.path.join(root,file)
|
||||||
log("Check %-s [%s]" % (file, human_readable_size(file_size)))
|
file_size = os.path.getsize(full_path)
|
||||||
file_scan_start_time = time.time()
|
log("Check %s [%s]" % (file, human_readable_size(file_size)))
|
||||||
|
file_scan_start_time = time.time()
|
||||||
|
if FAKE_SCAN :
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
file_scan_end_time = time.time()
|
status = "SKIPPED"
|
||||||
log("Check %s (%ds) -> %-s" % (file,(file_scan_end_time - file_scan_start_time),"SKIPPED"))
|
else:
|
||||||
scanned += os.path.getsize(full_path)
|
if file_size > (1024*1024*1024):
|
||||||
file_count += 1
|
status = "TOO BIG"
|
||||||
update_bar(scanned * 100 // used)
|
else:
|
||||||
except Exception as e :
|
res = pandora.submit_from_disk(full_path)
|
||||||
log("Unexpected error: %s" % e)
|
time.sleep(0.1)
|
||||||
return False
|
while True:
|
||||||
update_bar(100)
|
res = pandora.task_status(res["taskId"])
|
||||||
log("Scan done in %ds" % (time.time() - scan_start_time))
|
status = res["status"]
|
||||||
log("%d files scanned" % file_count)
|
if status != "WAITING":
|
||||||
else:
|
break
|
||||||
pp = pypandora.PyPandora(root_url=PANDORA_ROOT_URL)
|
time.sleep(0.5)
|
||||||
for arg in sys.argv[1:]:
|
file_scan_end_time = time.time()
|
||||||
log("Scan %-80s" % arg)
|
log("Check %s (%ds) -> %-s" % (file,(file_scan_end_time - file_scan_start_time),status))
|
||||||
|
scanned += os.path.getsize(full_path)
|
||||||
res = pp.submit_from_disk(arg)
|
file_count += 1
|
||||||
|
update_bar(scanned * 100 // used)
|
||||||
while True:
|
except Exception as e :
|
||||||
time.sleep(1)
|
log("Unexpected error3: %s" % e)
|
||||||
|
logging.exception("An exception was thrown!")
|
||||||
res = pp.task_status(res["taskId"])
|
return False
|
||||||
|
update_bar(100)
|
||||||
if res["status"] != "WAITING":
|
log("Scan done in %ds" % (time.time() - scan_start_time))
|
||||||
break
|
log("%d files scanned" % file_count)
|
||||||
break;
|
|
||||||
|
|
||||||
log("Scan %s -> %s" % (arg,res["status"]))
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -381,7 +389,8 @@ def main(stdscr):
|
||||||
while True:
|
while True:
|
||||||
device_loop()
|
device_loop()
|
||||||
except Exception as e :
|
except Exception as e :
|
||||||
logging.error("Unexpected error: ", e)
|
log("Unexpected error4: %s" % e)
|
||||||
|
logging.exception("An exception was thrown!")
|
||||||
# logging.error(traceback.format_exc())
|
# logging.error(traceback.format_exc())
|
||||||
finally:
|
finally:
|
||||||
end_curses()
|
end_curses()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue