def main(argv=None):
if argv is None:
argv = sys.argv
p = argparse.ArgumentParser(
description='SAVAPI Client',
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
p.add_argument('--savapi-host', dest='host', help='SAVAPI service host',
default='127.0.0.1')
p.add_argument('--savapi-port', dest='port', help='SAVAPI service port',
default=9999, type=int)
p.add_argument('file', help='Absolute path of file')
try:
args = p.parse_args(argv[1:])
except SystemExit:
return 2
log = logging.getLogger()
log.addHandler(logging.StreamHandler())
log.setLevel(logging.DEBUG)
archive_mimes = ('application/zip', 'application/x-tar', 'application/rar')
if magic:
mime = magic.Magic(mime=True)
mimetype = mime.from_file(args.file)
else:
mimes = MimeTypes()
mimetype, _ = mimes.guess_type(args.file)
with SAVAPIClient(args.host, args.port) as savapi:
r = savapi.command('SET', 'PRODUCT', '10776')
log.info(r)
if mimetype in archive_mimes:
r = savapi.command('SET', 'ARCHIVE_SCAN', '1')
log.info(r)
for r in savapi.scan(args.file):
print('{} {} <<< {}'.format(r.code, r.definition, r.data))
if int(r.code) in [319, 350]:
savapi.command('QUIT')
评论列表
文章目录