Skip to content
This repository was archived by the owner on May 14, 2021. It is now read-only.
11 changes: 6 additions & 5 deletions nexpose/nexpose.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def ExecuteWithPostData_FORM(session_id, uri, sub_url, timeout, post_data):
post_data = as_string(post_data)
else:
headers["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8"
post_data = urllib.parse.urlencode(utf8_encoded(post_data))
post_data = urllib.parse.urlencode(utf8_encoded(post_data)).encode(encoding="utf-8")
return ExecuteWebRequest(uri + sub_url, post_data, headers, timeout, lambda: 'POST')


Expand Down Expand Up @@ -1221,7 +1221,7 @@ def ExecuteMaintenanceCommand(self, target_task, command, extra_parameters):
parameters = dict(extra_parameters)
parameters['cmd'] = command
parameters['targetTask'] = target_task
result = self.ExecuteFormPost('admin/global/maintenance/maintCmd.txml', parameters)
result = self.ExecuteFormPost('data/maintenance/command', parameters)
return _HasSucceeded(result)

def ExecuteMaintenanceCommandAndRestartOnSuccess(self, target_task, command, extra_parameters):
Expand Down Expand Up @@ -1607,9 +1607,10 @@ def GetUserConfiguration(self, user_or_id):

# Because of a bug in the API not all expected information is returned in the UserConfiguration object
# Retrieve the information using an undocumented method
xml_data = self.ExecuteGet('ajax/user_config.txml', {'userid': user_or_id})
config.has_access_to_all_sites = get_attribute(xml_data, 'allSites') == 'true'
config.has_access_to_all_assetgroups = get_attribute(xml_data, 'allGroups') == 'true'
xml_data = self.ExecuteGet('/data/user/configuration', {'userid': user_or_id})
user = xml_data.find('User')
config.has_access_to_all_sites = user.attrib['allSites']
config.has_access_to_all_assetgroups = user.attrib['allGroups']
config.accessible_sites = [int(get_attribute(xml_site, 'id')) for xml_site in xml_data.findall('Sites/site')]
config.accessible_assetgroups = [int(get_attribute(xml_assetgroup, 'id')) for xml_assetgroup in xml_data.findall('Groups/group')] # Groups/group or Groups/Group

Expand Down
28 changes: 15 additions & 13 deletions nexpose/nexpose_criteria_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,31 @@
from .nexpose_criteria_operators import *
from .nexpose_criteria_constants import *
from future import standard_library
from future.utils import with_metaclass
standard_library.install_aliases()


def xrange_inclusive(start, included_stop):
return range(start, included_stop + 1)


class NexposeCriteriaField(object):
_Code = None
ValidOperators = [] # Note: this list shouldn't be empty
ValidValues = None # None indicates that any value is accepted
class MetaNexposeCriteriaField(type):
@property
def Code(cls):
return cls._Code if cls._Code else cls.Name

@property
def Name(cls):
return cls.__name__

class __metaclass__(type):
@property
def Code(cls):
return cls._Code if cls._Code else cls.Name
def __str__(cls):
return cls.Name

@property
def Name(cls):
return cls.__name__

def __str__(cls):
return cls.Name
class NexposeCriteriaField(with_metaclass(MetaNexposeCriteriaField, object)):
_Code = None
ValidOperators = [] # Note: this list shouldn't be empty
ValidValues = None # None indicates that any value is accepted


class ASSET(NexposeCriteriaField):
Expand Down
19 changes: 12 additions & 7 deletions nexpose/nexpose_criteria_operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,22 @@
unicode_literals)
from builtins import object
from future import standard_library
from future.utils import with_metaclass

standard_library.install_aliases()


class NexposeCriteriaOperator(object):
class __metaclass__(type):
@property
def Code(cls):
return cls.__name__
class MetaNexposeCriteriaOperator(type):
@property
def Code(cls):
return cls.__name__

def __str__(cls):
return cls.Code

def __str__(cls):
return cls.Code

class NexposeCriteriaOperator(with_metaclass(MetaNexposeCriteriaOperator, object)):
pass


class AND(NexposeCriteriaOperator):
Expand Down