From c6008bbe160cb50a64afd96ac3d67107cafebd15 Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Thu, 31 Oct 2024 00:17:06 +0100 Subject: [PATCH 1/3] improve bimi VMC --- src/Controller/DomainsController.php | 52 ++++---- src/EventListener/KernelExceptionListener.php | 3 + src/Repository/DomainsRepository.php | 33 +++++ templates/base/page_actions_icons.html.twig | 4 +- templates/domains/check.html.twig | 4 + templates/domains/edit.html.twig | 3 +- templates/domains/index.html.twig | 14 +- .../domains/modal_bimivmcdetail.html.twig | 121 ++++++++++++++++++ ....html.twig => modal_dnssettings.html.twig} | 0 9 files changed, 198 insertions(+), 36 deletions(-) create mode 100644 templates/domains/modal_bimivmcdetail.html.twig rename templates/domains/{modals.html.twig => modal_dnssettings.html.twig} (100%) diff --git a/src/Controller/DomainsController.php b/src/Controller/DomainsController.php index 2928a55..ec61c76 100644 --- a/src/Controller/DomainsController.php +++ b/src/Controller/DomainsController.php @@ -21,8 +21,6 @@ use App\Repository\DomainsRepository; use Ante\DnsParser\Dns; -use Ante\DnsParser\TXTRecords; -use App\Enums\TXTRecordStates; class DomainsController extends AbstractController { @@ -69,12 +67,8 @@ public function index(): Response $domains = $repository->findOwnedBy($usersRepository->findDomains($this->getUser()), array('fqdn' => 'DESC'), $pages["perpage"], ($pages["page"] - 1) * $pages["perpage"]); } - $bimivmcinfo = array(); - foreach($domains as $key => $domain) { - if(!is_null($domain->getBimivmcfile())){ - $bimivmcinfo[$domain->getId()] = openssl_x509_parse($domain->getBimivmcfile()); - } - } + $bimivmcinfo = $repository->get_bimi_vmc_details($domains); + dd($bimivmcinfo); $pages["totalitems"] = $repository->getTotalRows(); $pages["start"] = $pages["totalitems"] - (($pages["page"] - 1) * $pages["perpage"]); @@ -112,7 +106,7 @@ public function index(): Response 'name' => $this->translator->trans("Add"), 'target' => $this->router->generate('app_domains_add'), 'icon' => "plus" - ), + ) ), ), 'breadcrumbs' => array(array('name' => $this->translator->trans("Domains"), 'url' => $this->router->generate('app_domains'))), @@ -153,12 +147,15 @@ public function check(Domains $domain, Request $request): Response //dnssec //mx ptr records - $validation = $this->findvalidtxtrecords($dnsrecords); + $repository = $this->em->getRepository(Domains::class); + $validation = $repository->findvalidtxtrecords($dnsrecords); + $bimivmcinfo = $repository->get_bimi_vmc_details(array($domain)); return $this->render('domains/check.html.twig', [ 'domain' => $domain, 'validation' => $validation, 'selectors' => $selectors, + 'bimivmcinfo' => $bimivmcinfo, 'page' => array( 'menu' => array( 'category' => 'domains', @@ -166,7 +163,14 @@ public function check(Domains $domain, Request $request): Response ), 'pretitle' => $this->translator->trans("Domains"), 'title' => $this->translator->trans("Check domain ").$domain->getFqdn(), - 'actions' => array(), + 'actions' => array( + 0 => array( + 'primary' => false, + 'name' => $this->translator->trans("VMC Details"), + 'target' => "#modal-bimivmc", + 'icon' => "certificate" + ), + ), ), 'breadcrumbs' => array( array('name' => $this->translator->trans("Domains"), 'url' => $this->router->generate('app_domains')), @@ -175,25 +179,6 @@ public function check(Domains $domain, Request $request): Response ]); } - private function findvalidtxtrecords(array $records): array { - $result = array( - 'SPF'=> array(new TXTRecords\SPF1(""),TXTRecordStates::Fail), - 'DKIM'=> array(new TXTRecords\DKIM1(""),TXTRecordStates::Fail), - 'BIMI'=> array(new TXTRecords\BIMI1(""),TXTRecordStates::Fail), - 'STS'=> array(new TXTRecords\STSV1(""),TXTRecordStates::Fail), - 'DMARC'=> array(new TXTRecords\DMARC1(""),TXTRecordStates::Fail), - 'TLSRPT'=> array(new TXTRecords\TLSRPTV1(""),TXTRecordStates::Fail), - ); - - foreach($records as $record) { - if($record->v()->version() == 1) { - $result[$record->v()->type()] = array($record->v(),TXTRecordStates::Good); - } - } - - return $result; - } - #[Route('/domains/add', name: 'app_domains_add')] public function add(Request $request): Response { @@ -333,9 +318,16 @@ public function edit(Domains $domain, Request $request): Response 'target' => "#modal-dnssettings", 'icon' => "globe" ), + 1 => array( + 'primary' => false, + 'name' => $this->translator->trans("VMC Details"), + 'target' => "#modal-bimivmc", + 'icon' => "certificate" + ), ), ), 'domain' => $domain, + 'bimivmcinfo' => $bimivmcinfo, 'dns_info' => $dns_info, 'form' => $form, 'breadcrumbs' => array( diff --git a/src/EventListener/KernelExceptionListener.php b/src/EventListener/KernelExceptionListener.php index 19c44e7..af88a82 100644 --- a/src/EventListener/KernelExceptionListener.php +++ b/src/EventListener/KernelExceptionListener.php @@ -18,6 +18,9 @@ public function __construct(Environment $templating) public function onKernelException(ExceptionEvent $event) { $exception = $event->getThrowable(); + if($_ENV["APP_ENV"] == 'dev') { + return; + } switch($exception) { case $exception instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException: $response = new Response( diff --git a/src/Repository/DomainsRepository.php b/src/Repository/DomainsRepository.php index fe4835f..46a7562 100644 --- a/src/Repository/DomainsRepository.php +++ b/src/Repository/DomainsRepository.php @@ -6,6 +6,9 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; +use Ante\DnsParser\TXTRecords; +use App\Enums\TXTRecordStates; + /** * @extends ServiceEntityRepository * @@ -49,6 +52,36 @@ public function __construct(ManagerRegistry $registry, UsersRepository $usersRep // ; // } + public function get_bimi_vmc_details(array $domains): array + { + $bimivmcinfo = array(); + foreach($domains as $key => $domain) { + if(!is_null($domain->getBimivmcfile())){ + $bimivmcinfo[$domain->getId()] = openssl_x509_parse($domain->getBimivmcfile()); + } + } + return $bimivmcinfo; + } + + public function findvalidtxtrecords(array $records): array { + $result = array( + 'SPF'=> array(new TXTRecords\SPF1(""),TXTRecordStates::Fail), + 'DKIM'=> array(new TXTRecords\DKIM1(""),TXTRecordStates::Fail), + 'BIMI'=> array(new TXTRecords\BIMI1(""),TXTRecordStates::Fail), + 'STS'=> array(new TXTRecords\STSV1(""),TXTRecordStates::Fail), + 'DMARC'=> array(new TXTRecords\DMARC1(""),TXTRecordStates::Fail), + 'TLSRPT'=> array(new TXTRecords\TLSRPTV1(""),TXTRecordStates::Fail), + ); + + foreach($records as $record) { + if($record->v()->version() == 1) { + $result[$record->v()->type()] = array($record->v(),TXTRecordStates::Good); + } + } + + return $result; + } + public function validate_bimiv1_svg_file($svgContent) { $result = ['result' => true, 'errors' => []]; diff --git a/templates/base/page_actions_icons.html.twig b/templates/base/page_actions_icons.html.twig index 1a5d09d..757c0b8 100644 --- a/templates/base/page_actions_icons.html.twig +++ b/templates/base/page_actions_icons.html.twig @@ -1,5 +1,7 @@ {% if action.icon == "plus" %} {% elseif action.icon == "globe" %} - + + {% elseif action.icon == "certificate" %} + {% endif %} \ No newline at end of file diff --git a/templates/domains/check.html.twig b/templates/domains/check.html.twig index a6f9b43..82e83a2 100644 --- a/templates/domains/check.html.twig +++ b/templates/domains/check.html.twig @@ -111,3 +111,7 @@ {% endblock %} + +{% block modals %} +{% include 'domains/modal_bimivmcdetail.html.twig' %} +{% endblock %} \ No newline at end of file diff --git a/templates/domains/edit.html.twig b/templates/domains/edit.html.twig index 769ef1b..f434515 100644 --- a/templates/domains/edit.html.twig +++ b/templates/domains/edit.html.twig @@ -133,5 +133,6 @@ {% endblock %} {% block modals %} -{% include 'domains/modals.html.twig' %} +{% include 'domains/modal_dnssettings.html.twig' %} +{% include 'domains/modal_bimivmcdetail.html.twig' %} {% endblock %} \ No newline at end of file diff --git a/templates/domains/index.html.twig b/templates/domains/index.html.twig index 5c9d64d..9b2af4b 100644 --- a/templates/domains/index.html.twig +++ b/templates/domains/index.html.twig @@ -28,11 +28,17 @@ {{ domain.bimisvgfile|raw }} {% if bimivmcinfo[domain.id] is defined %} - {% if bimivmcinfo[domain.id]['validTo_time_t'] > now %} - {{ bimivmcinfo[domain.id]['validTo_time_t']|date("d-M-Y") }} + + {{ bimivmcinfo[domain.id]['signatureTypeSN'] }} + "now"|date_modify("+14 days")|date("d-M-Y") %} + bg-yellow text-dark {% else %} - {{ bimivmcinfo[domain.id]['validTo_time_t']|date("d-M-Y") }} + bg-red text-white {% endif %} + ">{{ bimivmcinfo[domain.id]['validTo_time_t']|date("d-M-Y") }} {% endif %} @@ -59,4 +65,4 @@ {% include 'base/pagination.html.twig' with { basepath: path('app_domains') } %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/domains/modal_bimivmcdetail.html.twig b/templates/domains/modal_bimivmcdetail.html.twig new file mode 100644 index 0000000..ee260ec --- /dev/null +++ b/templates/domains/modal_bimivmcdetail.html.twig @@ -0,0 +1,121 @@ + \ No newline at end of file diff --git a/templates/domains/modals.html.twig b/templates/domains/modal_dnssettings.html.twig similarity index 100% rename from templates/domains/modals.html.twig rename to templates/domains/modal_dnssettings.html.twig From 8799d70740e63b5c822699f75252cc5d1061cab4 Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Thu, 31 Oct 2024 00:18:45 +0100 Subject: [PATCH 2/3] cleanup --- src/Controller/DomainsController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Controller/DomainsController.php b/src/Controller/DomainsController.php index ec61c76..d0a483a 100644 --- a/src/Controller/DomainsController.php +++ b/src/Controller/DomainsController.php @@ -68,7 +68,6 @@ public function index(): Response } $bimivmcinfo = $repository->get_bimi_vmc_details($domains); - dd($bimivmcinfo); $pages["totalitems"] = $repository->getTotalRows(); $pages["start"] = $pages["totalitems"] - (($pages["page"] - 1) * $pages["perpage"]); From dafb71e386b9298f3ce3e96f7d5f4d9cdc7fa16e Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Thu, 31 Oct 2024 18:30:05 +0100 Subject: [PATCH 3/3] small fixes --- src/Controller/DomainsController.php | 3 +++ templates/domains/modal_bimivmcdetail.html.twig | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/Controller/DomainsController.php b/src/Controller/DomainsController.php index d0a483a..315962a 100644 --- a/src/Controller/DomainsController.php +++ b/src/Controller/DomainsController.php @@ -269,6 +269,9 @@ public function edit(Domains $domain, Request $request): Response $form = $this->createForm(DomainFormType::class, $domain); + $repository = $this->em->getRepository(Domains::class); + $bimivmcinfo = $repository->get_bimi_vmc_details(array($domain)); + $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $formdata = $form->getData(); diff --git a/templates/domains/modal_bimivmcdetail.html.twig b/templates/domains/modal_bimivmcdetail.html.twig index ee260ec..f788c21 100644 --- a/templates/domains/modal_bimivmcdetail.html.twig +++ b/templates/domains/modal_bimivmcdetail.html.twig @@ -6,6 +6,7 @@