diff --git a/cairis/data/DimensionDAO.py b/cairis/data/DimensionDAO.py index 426683671..38a6a7437 100644 --- a/cairis/data/DimensionDAO.py +++ b/cairis/data/DimensionDAO.py @@ -32,7 +32,7 @@ def __init__(self, session_id): def get_objects_by_names(self,table,id): try: - permissableDimensions = ['access_right', 'architectural_pattern', 'component_view','asset', 'asset_reference', 'asset_type','attacker','attacker_reference', 'behavioural_variable', 'capability','characteristic_synopsis', 'component', 'concept_reference','connector', 'countermeasure','countermeasure_reference', 'countermeasure_value', 'datastore', 'detection_mechanism', 'dfd_filter', 'document_reference', 'domainproperty','domainproperty_reference', 'entity','environment', 'environment_reference','external_document', 'goal', 'goal_reference','goal_category_type','goal_satisfaction','interface','likelihood','locations','misusability_case','misusecase','misusecase_reference','motivation','obstacle','obstacle_category_type','obstacle_reference','persona','persona_characteristic','persona_characteristic_synopsis','persona_implied_process','persona_reference','persona_type','priority_type', 'privilege', 'process','protocol', 'reference_synopsis','requirement', 'requirement_reference', 'requirement_type','response', 'response_reference', 'risk', 'risk_class','risk_reference','role', 'role_reference', 'role_type', 'securitypattern','severity', 'surface_type', 'task', 'task_characteristic', 'task_reference','template_asset', 'template_goal', 'template_requirement','trace_dimension','threat', 'threat_reference','threat_type', 'threat_value', 'ugm_filter', 'usecase', 'vulnerability','vulnerability_reference', 'vulnerability_type', 'document_reference_synopsis','persona_characteristic_synopsis','user_goal'] + permissableDimensions = ['access_right', 'architectural_pattern', 'component_view','asset', 'asset_reference', 'asset_type','attacker','attacker_reference', 'behavioural_variable', 'capability','characteristic_synopsis', 'component', 'concept_reference','connector', 'countermeasure','countermeasure_reference', 'countermeasure_value', 'datastore', 'detection_mechanism', 'dfd_filter', 'document_reference', 'domainproperty','domainproperty_reference', 'entity','environment', 'environment_reference','external_document', 'goal', 'goal_reference','goal_category_type','goal_satisfaction','interface','likelihood','locations','misusability_case','misusecase','misusecase_reference','motivation','noncomposite_environment','obstacle','obstacle_category_type','obstacle_reference','persona','persona_characteristic','persona_characteristic_synopsis','persona_implied_process','persona_reference','persona_type','priority_type', 'privilege', 'process','protocol', 'reference_synopsis','requirement', 'requirement_reference', 'requirement_type','response', 'response_reference', 'risk', 'risk_class','risk_reference','role', 'role_reference', 'role_type', 'securitypattern','severity', 'surface_type', 'task', 'task_characteristic', 'task_reference','template_asset', 'template_goal', 'template_requirement','trace_dimension','threat', 'threat_reference','threat_type', 'threat_value', 'ugm_filter', 'usecase', 'vulnerability','vulnerability_reference', 'vulnerability_type', 'document_reference_synopsis','persona_characteristic_synopsis','user_goal'] if (table not in permissableDimensions): raise CairisHTTPError(BAD_REQUEST,'Invalid dimension',table + ' is not a permissable dimension') if (table == 'persona_characteristic_synopsis' or table == 'document_reference_synopsis' or table == 'user_goal'): @@ -45,7 +45,7 @@ def get_objects_by_names(self,table,id): def get_objects_by_2parameters(self,table,environment): try: - permissableDimensions = ['asset','asset_value','attacker','control','countermeasure','datastore','detection_mechanism','diagramDatastore','diagramEntity','diagramProcess','domainproperty','dfd_filter','entity','goal','misusecase','obstacle','persona', 'process', 'requirement','response','risk','role','task','task_characteristic', 'threat', 'ugm_filter','usecase', 'unconnected_vulnerability','unconnected_threat','vulnerability','component'] + permissableDimensions = ['asset','asset_value','attacker','control','countermeasure','datastore','detection_mechanism','diagramDatastore','diagramEntity','diagramProcess','domainproperty','dfd_filter','entity','goal','information_asset','misusecase','obstacle','persona', 'process', 'requirement','response','risk','role','task','task_characteristic', 'threat', 'ugm_filter','usecase', 'unconnected_vulnerability','unconnected_threat','vulnerability','component'] if (table not in permissableDimensions): raise CairisHTTPError(BAD_REQUEST,'Invalid dimension',table + ' is not a permissable dimension when specifying environment') if (self.db_proxy.nameExists(environment,'environment') == False): diff --git a/cairis/sql/procs.sql b/cairis/sql/procs.sql index 985c1d77d..3ffc0ded7 100755 --- a/cairis/sql/procs.sql +++ b/cairis/sql/procs.sql @@ -1038,6 +1038,7 @@ drop procedure if exists invalidObjectNames; drop procedure if exists reservedCharacterCheck; drop procedure if exists unconnected_vulnerabilityNames; drop procedure if exists unconnected_threatNames; +drop procedure if exists information_assetNames; delimiter // @@ -8608,6 +8609,9 @@ begin elseif dimensionTable = 'requirement' and constraintId = -1 then set dimSql = 'select o.id,o.name from requirement o where o.version = (select max(i.version) from requirement i where i.id = o.id)'; + elseif dimensionTable = 'noncomposite_environment' + then + set dimSql = 'select id, name from environment where id not in (select composite_environment_id from composite_environment) order by 1'; else if dimensionTable = 'persona_characteristic' then @@ -31744,4 +31748,12 @@ begin end // +create procedure information_assetNames(in environmentName text) +begin + declare environmentId int; + select id into environmentId from environment where name = environmentName limit 1; + select a.name from asset a, asset_type at, environment_asset ea where ea.environment_id = environmentId and ea.asset_id = a.id and a.asset_type_id = at.id and at.name = 'Information' order by 1; +end +// + delimiter ;