- from wpc.parseOptions import parseOptions
- from wpc.report.report import report
- from wpc.audit.dump import dump
- from wpc.audit.dumptab import dumptab
- from wpc.audit.audit import audit
- import datetime
- import time
- import wpc.utils
- import sys
-
- # ------------------------ Main Code Starts Here ---------------------
-
- # Parse command line arguments
- options = parseOptions()
-
- # Initialise WPC
- # TODO be able to enable/disable caching
- wpc.utils.init(options)
-
- # Object to hold all the issues we find
- report = report()
- wpc.utils.populate_scaninfo(report)
- issues = report.get_issues()
-
- if options.pyshell_mode:
- wpc.utils.printline("Python Shell - to exit do CTRL-z or type exit()")
- print
- import code
- code.interact(local=dict(globals(), **locals()))
- sys.exit()
-
- wpc.utils.dump_options(options)
-
- wpc.utils.printline("Starting Audit at %s" % datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S'))
- start_time = time.time()
-
- # Dump raw data if required
- if options.dump_mode:
- d = dump(options)
- d.run()
-
- # Dump raw data if required
- if options.dumptab_mode:
- d = dumptab(options, report)
- d.run()
-
- # Identify security issues
- if options.audit_mode:
- a = audit(options, report)
- a.run()
-
- if options.report_file_stem:
- wpc.utils.printline("Audit Complete at %s" % datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S'))
- print
- print "[+] Runtime: %.1f seconds" % int(time.time() - start_time)
- print
-
- filename = "%s.xml" % options.report_file_stem
- print "[+] Saving report file %s" % filename
- f = open(filename, 'w')
- f.write(report.as_xml_string())
- f.close()
-
- filename = "%s.txt" % options.report_file_stem
- print "[+] Saving report file %s" % filename
- f = open(filename, 'w')
- f.write(report.as_text())
- f.close()
-
- filename = "%s.html" % options.report_file_stem
- print "[+] Saving report file %s" % filename
- f = open(filename, 'w')
- f.write(report.as_html())
- f.close()
-
- #wpc.conf.cache.print_stats()