Skip to content

Commit

Permalink
Adapt create assets mutations to format of yaml file.
Browse files Browse the repository at this point in the history
  • Loading branch information
elyousfi5 committed Jun 12, 2024
1 parent 203fd9b commit 0bd5f48
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 184 deletions.
62 changes: 34 additions & 28 deletions src/ostorlab/serve_app/oxo.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,37 +307,43 @@ def mutate(
errors.append(error_message)
continue
if asset.android_store is not None:
new_asset = models.AndroidStore.create(
package_name=asset.android_store.package_name,
application_name=asset.android_store.application_name,
)
created_assets.append(new_asset)
for asset_android_store in asset.android_store:
new_asset = models.AndroidStore.create(
package_name=asset_android_store.package_name,
application_name=asset_android_store.application_name,
)
created_assets.append(new_asset)
if asset.android_file is not None:
content = asset.android_file.file.read()
android_file_path = (
config_manager.upload_path / f"android_{str(uuid.uuid4())}"
)
android_file_path.write_bytes(content)
new_asset = models.AndroidFile.create(
package_name=asset.android_file.package_name,
path=str(android_file_path),
)
created_assets.append(new_asset)
for asset_android_file in asset.android_file:
content = asset_android_file.file.read()
android_file_path = (
config_manager.upload_path / f"android_{str(uuid.uuid4())}"
)
android_file_path.write_bytes(content)
new_asset = models.AndroidFile.create(
package_name=asset_android_file.package_name,
path=str(android_file_path),
)
created_assets.append(new_asset)
if asset.ios_store is not None:
new_asset = models.IosStore.create(
bundle_id=asset.ios_store.bundle_id,
application_name=asset.ios_store.application_name,
)
created_assets.append(new_asset)
for asset_ios_store in asset.ios_store:
new_asset = models.IosStore.create(
bundle_id=asset_ios_store.bundle_id,
application_name=asset_ios_store.application_name,
)
created_assets.append(new_asset)
if asset.ios_file is not None:
content = asset.ios_file.file.read()
ios_file_path = config_manager.upload_path / f"ios_{str(uuid.uuid4())}"
ios_file_path.write_bytes(content)
new_asset = models.IosFile.create(
bundle_id=asset.ios_file.bundle_id,
path=str(ios_file_path),
)
created_assets.append(new_asset)
for asset_ios_file in asset.ios_file:
content = asset_ios_file.file.read()
ios_file_path = (
config_manager.upload_path / f"ios_{str(uuid.uuid4())}"
)
ios_file_path.write_bytes(content)
new_asset = models.IosFile.create(
bundle_id=asset_ios_file.bundle_id,
path=str(ios_file_path),
)
created_assets.append(new_asset)
if asset.link is not None:
new_asset = models.Urls.create(links=asset.link)
created_assets.append(new_asset)
Expand Down
37 changes: 10 additions & 27 deletions src/ostorlab/serve_app/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,22 +187,7 @@ def resolve_vulnerabilities(
return OxoVulnerabilitiesType(vulnerabilities=vulnerabilities)


class AssetScansMixin:
scans = graphene.List(
lambda: OxoScanType, last_only=graphene.Boolean(required=False)
)

def resolve_scans(self, info):
with models.Database() as session:
asset = session.query(models.Asset).get(self.id)
scan = session.query(models.Scan).get(asset.scan_id)

return [scan]


class OxoAndroidStoreAssetType(
graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin
):
class OxoAndroidStoreAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
class Meta:
model = models.AndroidStore
only_fields = ("id", "package_name", "application_name")
Expand All @@ -221,7 +206,7 @@ class OxoAndroidStoreAssetInputType(graphene.InputObjectType):
application_name = graphene.String()


class OxoIOSStoreAssetType(graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin):
class OxoIOSStoreAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
class Meta:
model = models.IosStore
only_fields = ("id", "bundle_id", "application_name")
Expand All @@ -240,9 +225,7 @@ class OxoIOSStoreAssetInputType(graphene.InputObjectType):
application_name = graphene.String()


class OxoAndroidFileAssetType(
graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin
):
class OxoAndroidFileAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
class Meta:
model = models.AndroidFile
only_fields = ("id", "package_name", "path")
Expand All @@ -261,7 +244,7 @@ class OxoAndroidFileAssetInputType(graphene.InputObjectType):
package_name = graphene.String()


class OxoIOSFileAssetType(graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin):
class OxoIOSFileAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
class Meta:
model = models.IosFile
only_fields = ("id", "bundle_id", "path")
Expand All @@ -286,7 +269,7 @@ class Meta:
only_fields = ("url", "method")


class OxoUrlsAssetType(graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin):
class OxoUrlsAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
links = graphene.List(OxoLinkAssetType, required=False)

class Meta:
Expand All @@ -307,7 +290,7 @@ class Meta:
only_fields = ("host", "mask")


class OxoNetworkAssetType(graphene_sqlalchemy.SQLAlchemyObjectType, AssetScansMixin):
class OxoNetworkAssetType(graphene_sqlalchemy.SQLAlchemyObjectType):
networks = graphene.List(OxoIPRangeAssetType, required=False)

class Meta:
Expand Down Expand Up @@ -735,10 +718,10 @@ class OxoLinkInputType(graphene.InputObjectType):


class OxoAssetInputType(graphene.InputObjectType):
android_file = OxoAndroidFileAssetInputType()
ios_file = OxoIOSFileAssetInputType()
android_store = OxoAndroidStoreAssetInputType()
ios_store = OxoIOSStoreAssetInputType()
android_file = graphene.List(OxoAndroidFileAssetInputType)
ios_file = graphene.List(OxoIOSFileAssetInputType)
android_store = graphene.List(OxoAndroidStoreAssetInputType)
ios_store = graphene.List(OxoIOSStoreAssetInputType)
link = graphene.List(OxoLinkInputType)
ip = graphene.List(OxoIPRangeInputType)

Expand Down
Loading

0 comments on commit 0bd5f48

Please sign in to comment.