Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into feature/nibbles
Browse files Browse the repository at this point in the history
  • Loading branch information
originalsouth committed Nov 26, 2024
2 parents ac80ae0 + 50273bd commit d978519
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 7 deletions.
2 changes: 1 addition & 1 deletion octopoes/octopoes/models/ooi/dns/records.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class DNSMXRecord(DNSRecord):
object_type: Literal["DNSMXRecord"] = "DNSMXRecord"
dns_record_type: Literal["MX"] = "MX"

mail_hostname: Reference | None = ReferenceField(Hostname, default=None)
mail_hostname: Reference | None = ReferenceField(Hostname, default=None, max_inherit_scan_level=1)
preference: int | None = None

_reverse_relation_names = {"hostname": "dns_mx_records", "mail_hostname": "mail_server_of"}
Expand Down
2 changes: 1 addition & 1 deletion rocky/reports/templates/forms/report_form_fields.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
{% endfor %}
{% endif %}
{% for required_optional_plugin, plugins_ in plugins.items %}
{% for plugin in plugins_ %}<input type="hidden" name="plugin" value="{{ plugin.id }}">{% endfor %}
{% for plugin in plugins_ %}<input type="hidden" name="all_plugins" value="{{ plugin.id }}">{% endfor %}
{% endfor %}
{% if request.POST.choose_recurrence %}
<input type="hidden"
Expand Down
11 changes: 8 additions & 3 deletions rocky/reports/templates/partials/report_setup_scan.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,13 @@ <h3>{% translate "Required plugins" %}</h3>
</div>
<div class="column-4 tiles plugins images-cover">
{% for required_plugin in plugins.required|dictsort:"enabled" %}
{% include "partials/plugin_tile.html" with plugin=required_plugin plugin_report_types=plugin_data.plugin_report_types show_report_types="yes" plugin_report_types=plugin_data.plugin_report_types %}
{% if required_plugin.enabled %}
{% include "partials/plugin_tile.html" with form_id="continue-to-configuration" plugin_report_types=plugin_data.plugin_report_types show_report_types="yes" plugin=required_plugin remove_action_buttons="yes" add_checkbox="yes" %}

{% else %}
{% include "partials/plugin_tile.html" with form_id="continue-to-configuration" plugin_report_types=plugin_data.plugin_report_types show_report_types="yes" plugin=required_plugin remove_action_buttons="yes" add_checkbox="yes" checked="yes" %}

{% endif %}
{% endfor %}
</div>
</div>
Expand All @@ -76,7 +81,7 @@ <h3>{% translate "Suggested plugins" %}</h3>
</div>
<div class="column-4 tiles plugins images-cover">
{% for optional_plugin in plugins.optional|dictsort:"enabled" %}
{% include "partials/plugin_tile.html" with plugin=optional_plugin form_id="continue-to-configurationt" show_report_types="yes" plugin_report_types=plugin_data.plugin_report_types %}
{% include "partials/plugin_tile.html" with form_id="continue-to-configuration" plugin_report_types=plugin_data.plugin_report_types show_report_types="yes" plugin=optional_plugin remove_action_buttons="yes" add_checkbox="yes" %}

{% endfor %}
</div>
Expand All @@ -98,7 +103,7 @@ <h3>{% translate "Suggested plugins" %}</h3>
{% include "forms/report_form_fields.html" %}

<button type="submit">
{% translate "Continue" %}<span class="icon ti-chevron-right"></span>
{% translate "Enable plugins and continue" %}<span class="icon ti-chevron-right"></span>
</button>
</form>
{% else %}
Expand Down
26 changes: 26 additions & 0 deletions rocky/reports/views/aggregate_report.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
from typing import Any

from django.contrib import messages
from django.http import HttpRequest, HttpResponse
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
from httpx import HTTPError
from katalogus.client import get_katalogus
from tools.view_helpers import PostRedirect

from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport
from reports.views.base import (
Expand Down Expand Up @@ -107,6 +111,28 @@ class ExportSetupAggregateReportView(
current_step = 4
report_type = AggregateOrganisationReport

def post(self, request, *args, **kwargs):
selected_plugins = request.POST.getlist("plugin", [])

if not selected_plugins:
return super().post(request, *args, **kwargs)

if not self.organization_member.has_perm("tools.can_enable_disable_boefje"):
messages.error(request, _("You do not have the required permissions to enable plugins."))
return PostRedirect(self.get_previous())

client = get_katalogus(self.organization.code)
for selected_plugin in selected_plugins:
try:
client.enable_boefje_by_id(selected_plugin)
except HTTPError:
messages.error(
request,
_("An error occurred while enabling {}. The plugin is not available.").format(selected_plugin),
)
return self.post(request, *args, **kwargs)
return super().post(request, *args, **kwargs)


class SaveAggregateReportView(SaveAggregateReportMixin, BreadcrumbsAggregateReportView, SaveReportView):
"""
Expand Down
26 changes: 26 additions & 0 deletions rocky/reports/views/generate_report.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
from typing import Any

from django.contrib import messages
from django.http import HttpRequest, HttpResponse
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
from httpx import HTTPError
from katalogus.client import get_katalogus
from tools.view_helpers import PostRedirect

from reports.views.base import (
REPORTS_PRE_SELECTION,
Expand Down Expand Up @@ -100,6 +104,28 @@ class ExportSetupGenerateReportView(GenerateReportStepsMixin, BreadcrumbsGenerat
breadcrumbs_step = 6
current_step = 4

def post(self, request, *args, **kwargs):
selected_plugins = request.POST.getlist("plugin", [])

if not selected_plugins:
return super().post(request, *args, **kwargs)

if not self.organization_member.has_perm("tools.can_enable_disable_boefje"):
messages.error(request, _("You do not have the required permissions to enable plugins."))
return PostRedirect(self.get_previous())

client = get_katalogus(self.organization.code)
for selected_plugin in selected_plugins:
try:
client.enable_boefje_by_id(selected_plugin)
except HTTPError:
messages.error(
request,
_("An error occurred while enabling {}. The plugin is not available.").format(selected_plugin),
)
return self.post(request, *args, **kwargs)
return super().post(request, *args, **kwargs)


class SaveGenerateReportView(SaveGenerateReportMixin, BreadcrumbsGenerateReportView, SaveReportView):
"""
Expand Down
12 changes: 10 additions & 2 deletions rocky/rocky/locale/django.pot
Original file line number Diff line number Diff line change
Expand Up @@ -1617,7 +1617,6 @@ msgstr ""
#: onboarding/templates/account/step_2a_organization_update.html
#: onboarding/templates/account/step_2b_indemnification_setup.html
#: onboarding/templates/step_3d_clearance_level_introduction.html
#: reports/templates/partials/report_setup_scan.html
msgid "Continue"
msgstr ""

Expand Down Expand Up @@ -2385,7 +2384,8 @@ msgstr ""
msgid "Please select all required plugins to proceed."
msgstr ""

#: onboarding/views.py
#: onboarding/views.py reports/views/aggregate_report.py
#: reports/views/generate_report.py
msgid "An error occurred while enabling {}. The plugin is not available."
msgstr ""

Expand Down Expand Up @@ -4063,6 +4063,10 @@ msgstr ""
msgid "There are no optional plugins."
msgstr ""

#: reports/templates/partials/report_setup_scan.html
msgid "Enable plugins and continue"
msgstr ""

#: reports/templates/partials/report_severity_totals.html
#: reports/templates/partials/report_severity_totals_table.html
msgid "Findings overview"
Expand Down Expand Up @@ -4463,6 +4467,10 @@ msgstr ""
msgid "Save report"
msgstr ""

#: reports/views/aggregate_report.py reports/views/generate_report.py
msgid "You do not have the required permissions to enable plugins."
msgstr ""

#: reports/views/base.py
msgid "Select at least one OOI to proceed."
msgstr ""
Expand Down

0 comments on commit d978519

Please sign in to comment.