-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathupload_dir.py
More file actions
48 lines (39 loc) · 1.67 KB
/
upload_dir.py
File metadata and controls
48 lines (39 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from pyquo import session
from pyquo.authenticator import UserAuthenticator
from pyquo.models import Case, File, Encases
import argparse
import os
class QuoLab(object):
def __init__(self, url, username, password):
self.connect(url, username, password)
def connect(self, url, username, password):
auth = UserAuthenticator(username=username,
password=password)
session.Session(base_url=url,
global_session=True,
auth=auth)
if __name__ == '__main__':
description = 'Upload content of a directory to a QuoLab case'
p = argparse.ArgumentParser(description=description)
p.add_argument('--host', type=str,
required=True, help='https://qlab.quo')
p.add_argument('--creds', type=str,
required=True, help='username:password')
p.add_argument('--caseid', type=str,
required=True, help='HPUeI5kDTTyNlWGZbbnQQA')
p.add_argument('--dir', type=str,
required=True, help='target directory')
args = p.parse_args()
username, password = args.creds.split(':')
q = QuoLab(args.host, username, password)
case = Case(args.caseid)
case.get()
print('[+] Target case name is "%s"' % (case.name))
for (dirpath, dirnames, filenames) in os.walk(args.dir):
for name in filenames:
with open(os.path.join(dirpath, name), 'rb') as f:
print(' |- Uploading "%s"' % (name))
t = File.upload(f.read(), filename=name)
t.save()
ref = Encases(source=case, target=t).save()
print(' |-- %s' % (ref))