sqlmap/sqlmapapi.py

76 lines
2.8 KiB
Python
Raw Normal View History

2019-05-08 13:47:52 +03:00
#!/usr/bin/env python
"""
2024-01-04 01:11:52 +03:00
Copyright (c) 2006-2024 sqlmap developers (https://sqlmap.org/)
2017-10-11 15:50:46 +03:00
See the file 'LICENSE' for copying permission
"""
2016-02-13 23:28:02 +03:00
import sys
sys.dont_write_bytecode = True
2016-12-20 11:53:44 +03:00
__import__("lib.utils.versioncheck") # this has to be the first non-standard import
2015-11-08 02:10:28 +03:00
2017-09-09 23:27:40 +03:00
import logging
import optparse
2019-06-06 14:40:32 +03:00
import os
2017-09-09 23:27:40 +03:00
import warnings
2019-12-06 18:11:22 +03:00
warnings.filterwarnings(action="ignore", category=UserWarning)
2017-09-09 23:27:40 +03:00
warnings.filterwarnings(action="ignore", category=DeprecationWarning)
2019-06-06 14:40:32 +03:00
from lib.core.common import getUnicode
from lib.core.common import setPaths
from lib.core.data import logger
from lib.core.patch import dirtyPatches
from lib.core.patch import resolveCrossReferences
2016-01-27 12:03:30 +03:00
from lib.core.settings import RESTAPI_DEFAULT_ADAPTER
2015-12-13 01:48:30 +03:00
from lib.core.settings import RESTAPI_DEFAULT_ADDRESS
from lib.core.settings import RESTAPI_DEFAULT_PORT
2019-06-06 14:40:32 +03:00
from lib.core.settings import UNICODE_ENCODING
from lib.utils.api import client
from lib.utils.api import server
2019-06-06 14:40:32 +03:00
try:
from sqlmap import modulePath
except ImportError:
def modulePath():
return getUnicode(os.path.dirname(os.path.realpath(__file__)), encoding=sys.getfilesystemencoding() or UNICODE_ENCODING)
2016-01-07 23:46:20 +03:00
def main():
"""
REST-JSON API main function
"""
2016-01-07 23:46:20 +03:00
dirtyPatches()
resolveCrossReferences()
# Set default logging level to debug
logger.setLevel(logging.DEBUG)
2016-08-02 01:17:59 +03:00
# Initialize paths
setPaths(modulePath())
2012-12-20 20:53:43 +04:00
# Parse command line options
2012-12-20 19:29:23 +04:00
apiparser = optparse.OptionParser()
2019-12-18 13:30:13 +03:00
apiparser.add_option("-s", "--server", help="Run as a REST-JSON API server", action="store_true")
apiparser.add_option("-c", "--client", help="Run as a REST-JSON API client", action="store_true")
2016-11-25 14:34:13 +03:00
apiparser.add_option("-H", "--host", help="Host of the REST-JSON API server (default \"%s\")" % RESTAPI_DEFAULT_ADDRESS, default=RESTAPI_DEFAULT_ADDRESS, action="store")
apiparser.add_option("-p", "--port", help="Port of the the REST-JSON API server (default %d)" % RESTAPI_DEFAULT_PORT, default=RESTAPI_DEFAULT_PORT, type="int", action="store")
apiparser.add_option("--adapter", help="Server (bottle) adapter to use (default \"%s\")" % RESTAPI_DEFAULT_ADAPTER, default=RESTAPI_DEFAULT_ADAPTER, action="store")
2024-01-11 18:11:40 +03:00
apiparser.add_option("--database", help="Set IPC database filepath (optional)")
apiparser.add_option("--username", help="Basic authentication username (optional)", action="store")
apiparser.add_option("--password", help="Basic authentication password (optional)", action="store")
2012-12-20 19:29:23 +04:00
(args, _) = apiparser.parse_args()
2012-12-20 20:53:43 +04:00
# Start the client or the server
2019-12-09 23:49:11 +03:00
if args.server:
2024-01-11 18:11:40 +03:00
server(args.host, args.port, adapter=args.adapter, username=args.username, password=args.password, database=args.database)
2019-12-09 23:49:11 +03:00
elif args.client:
client(args.host, args.port, username=args.username, password=args.password)
else:
apiparser.print_help()
2016-01-07 23:46:20 +03:00
if __name__ == "__main__":
main()