2019-05-08 13:47:52 +03:00
#!/usr/bin/env python
2012-12-20 18:59:11 +04:00
"""
2019-01-05 23:38:52 +03:00
Copyright ( c ) 2006 - 2019 sqlmap developers ( http : / / sqlmap . org / )
2017-10-11 15:50:46 +03:00
See the file ' LICENSE ' for copying permission
2012-12-20 18:59:11 +04:00
"""
2016-02-13 23:28:02 +03:00
import sys
sys . dont_write_bytecode = True
2012-12-20 18:59:11 +04:00
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
2012-12-20 18:59:11 +04:00
from lib . core . common import setPaths
from lib . core . data import logger
2019-05-08 03:40:36 +03:00
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
2012-12-20 18:59:11 +04:00
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 ( ) :
2012-12-20 18:59:11 +04:00
"""
REST - JSON API main function
"""
2016-01-07 23:46:20 +03:00
2019-05-08 03:40:36 +03:00
dirtyPatches ( )
resolveCrossReferences ( )
2012-12-20 18:59:11 +04:00
# 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 18:59:11 +04:00
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 " )
2017-08-04 14:37:49 +03:00
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 18:59:11 +04:00
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 :
2017-08-04 14:37:49 +03:00
server ( args . host , args . port , adapter = args . adapter , username = args . username , password = args . password )
2019-12-09 23:49:11 +03:00
elif args . client :
2017-08-04 14:37:49 +03:00
client ( args . host , args . port , username = args . username , password = args . password )
2013-07-10 18:57:44 +04:00
else :
apiparser . print_help ( )
2016-01-07 23:46:20 +03:00
if __name__ == " __main__ " :
main ( )