msf_url = session.msf_host or auth.user.f_msf_pro_url msf_ws_num = session.msf_workspace_num or 1 msf_user = session.msf_user or None response.title = "%s :: Metasploit API Settings" % (settings.title) try: from MetasploitAPI import MetasploitAPI, MSFAPIError except ImportError, error: return dict(error=str(error), alert=True, form=None) error=None alert=False msf = MetasploitAPI(host=msf_url, apikey=msf_key) try: workspaces = [w for w in msf.pro_workspaces().keys()] users = [u for u in msf.pro_users().get('users').keys()] except MSFAPIError, e: error = str(e) alert = True workspaces = [] users = [] form=SQLFORM.factory( Field('workspace', 'string', default=session.msf_workspace, label=T('Workspace Name'), requires=IS_IN_SET(workspaces)), Field('workspace_num', 'string', default=msf_ws_num, label=T('Workspace Number')), Field('user', 'string', default=msf_user, label=T('MSF User'), requires=IS_IN_SET(users)), Field('url', 'string', default=msf_url, label=T('MSF URL')), Field('msf_key', 'string', default=msf_key, label=T('API Key')), ) # NOTE: workspace_num must be manually entered since there's no way for us # to learn it from the API. We're just guessing otherwise - 1 is the default
"""Settings Metasploit API""" msf_settings = msf_get_config(session) response.title = "%s :: Metasploit API Settings" % (settings.title) try: from MetasploitAPI import MetasploitAPI, MSFAPIError except ImportError, error: return dict(error=str(error), alert=True, form=None) error=None alert=False msf = MetasploitAPI(host=msf_settings['url'], apikey=msf_settings['key']) try: workspaces = [w for w in msf.pro_workspaces().keys()] users = [u for u in msf.pro_users().get('users').keys()] except MSFAPIError, e: error = str(e) alert = True workspaces = [] users = [] form=SQLFORM.factory( Field('workspace', 'string', default=msf_settings['workspace'], label=T('Workspace Name'), requires=IS_IN_SET(workspaces)), Field('workspace_num', 'string', default=msf_settings['ws_num'], label=T('Workspace Number')), Field('user', 'string', default=msf_settings['user'], label=T('MSF User'), requires=IS_IN_SET(users)), Field('url', 'string', default=msf_settings['url'], label=T('MSF URL')), Field('key', 'string', default=msf_settings['key'], label=T('API Key')), ) # NOTE: workspace_num must be manually entered since there's no way for us # to learn it from the API. We're just guessing otherwise - 1 is the default