• chevron_right

      Laravel Jetstream and OpenLDAP

      pubsub.slavino.sk / warlord0blog · Saturday, 21 May, 2022 - 12:53 edit

    It’s been a very long time since I did anything with Laravel. I found another job around the time of Laravel 6, and today they are up to Laravel 9 – much has changed. I was keen to look at using Laravel with LDAP both for authentication and management. Building the App First, I had &ellipsisRead the full post »

    Značky: #Laravel, #php, #tailwindcss, #JavaScript, #Linux, #LdapRecord, #Web

    • chevron_right

      Run PHP on .NET with PeachPie

      pubsub.slavino.sk / infoworldcom · Wednesday, 16 February, 2022 - 11:00 edit

    One of the more interesting things about .NET is its extensibility. It’s not just a Microsoft-only development platform with Windows-focused frameworks and languages. Even in the early days of the platform, tools such as IronRuby and IronPython brought popular open source languages to the CLR, while projects such as Unity were built on top of .NET, adding additional libraries and services.

    At the heart of .NET is the open source Common Language Runtime, CoreCLR. This is a combination of an architecture-specific just-in-time compiler, RyuJIT, and an interpreter for the project’s CIL (Common Intermediate Language). Backed by open standards, .NET languages compile to CIL, with the CLR handling run-time compilation. There’s even the option of compiling straight to architecture-specific binaries built around CoreRT, a native runtime environment.

    To read this article in full, please click here


    Značky: #PHP, #Rozne

    • Li chevron_right

      Sortie de Snuffleupagus 0.7.0 - Los Elefantes

      jvoisin · pubsub.eckmul.net / linuxfr_news · Wednesday, 6 January, 2021 - 08:02 · 4 minutes

    <div><p><img src="//img.linuxfr.org/img/68747470733a2f2f6475737472692e6f72672f622f696d616765732f73702e706e67/sp.png" alt="Logo du projet" title="Source : https://dustri.org/b/images/sp.png"></p> <p>Snuffleupagus est un module pour PHP, version 7+ et maintenant 8+, qui a pour but d’augmenter drastiquement la difficulté des attaques contre les sites Web. Cela s’obtient, entre autres, via la désactivation de fonctions et de classes, et en fournissant un système de correctifs virtuels, permettant à l’administrateur de corriger des vulnérabilités spécifiques sans modifier le code PHP.</p> <p>La version 0.7.0 sortie aujourd’hui, est un excellent prétexte pour reparler de ce projet sur LinuxFr.org</p> </div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/news/snuffleupagus-version-0-3-0-dentalium-elephantinum" hreflang="fr" href="https://linuxfr.org/redirect/107641">Dépêche précédente sur Snuffleupagus version-0-3-0</a></li><li>lien nᵒ 2 : <a title="https://dustri.org/b/snuffleupagus-070-los-elefantes.html" hreflang="en" href="https://linuxfr.org/redirect/107642">Billet de blog d&#39;annonce de la nouvelle version</a></li><li>lien nᵒ 3 : <a title="https://snuffleupagus.readthedocs.io/" hreflang="en" href="https://linuxfr.org/redirect/107643">Site officiel</a></li><li>lien nᵒ 4 : <a title="https://twitter.com/sp_php" hreflang="en" href="https://linuxfr.org/redirect/107647">Compte twitter du projet</a></li><li>lien nᵒ 5 : <a title="https://github.com/jvoisin/snuffleupagus" hreflang="en" href="https://linuxfr.org/redirect/107648">Dépôt github</a></li></ul><div><p>La principale nouveauté de cette version est le support de <a href="https://www.php.net/releases/8.0/fr.php">PHP 8</a>, qui bien que n’ayant pas été très difficile fût fastidieuse. En effet, PHP a changé la capitalisation de certains de ses messages d’erreurs, ainsi que les paramètres par défaut de logging, cassant un grand nombre de tests unitaires. Quitte à moderniser le code, autant faire les choses à fond, en utilisant PCRE2 autant que possible tout en maintenant la compatibilité avec PCRE1 pour les <em>vieilles</em> versions de PHP. En effet, Snuffleupagus supporte toutes les versions de PHP7, y compris les versions en fin de vie, qui continuent d’exister dans certaines distributions linux bénéficiaire de support long.</p> <p>C’est également l’occasion de corriger un bogue passé inaperçu jusqu’ici : le <a href="https://www.php.net/manual/fr/migration70.new-features.php">mode de typage strict</a> apporté par Snuffleupagus n’était pas désactivable. Ce souci a été mis en lumière grâce à un bug dans <a href="https://github.com/composer/composer/pull/9498">composer</a>, qui a au passage été corrigé. La bonne nouvelle, c’est que ce bogue n’a pas dû embêter grand monde pour ne jamais avoir été rencontré avant : soit personne n’utilise Snuffleupagus, soit les gens l’utilisant ont des bases de codes suffisamment propres pour ne pas comporter de fautes de types !</p> <p>D’autres fonctionnalités mineures ont également été ajoutées, comme la possibilité de « sauter » des fonctions avec l’opérateur <code>&gt;</code>: par exemple, la règle <code>sp.disable_function("bla&gt;blop").drop()</code> terminera l’exécution si la fonction <code>blop</code> a dans ses parents la fonction <code>bla</code>. Ce qui devrait permettre d’écrire facilement des règles pour se prémunir des attaques basées sur de la désérialisation, en interdisant à des fonctions dangereuses de s’exécuter si <code>unserialize</code> est dans leurs fonctions parentes.</p> <p>Afin d’obtenir toujours plus de visibilité, les requêtes sauvegardées lorsqu’une règle de filtrage est déclenchée contiennent maintenant l’ensemble de l’arbre d’appel des fonctions, permettant de comprendre le cheminement qui a mené à la règle.</p> <p>Tout ça c’est intéressant, mais est-ce que Snuffleupagus fonctionne ? Il semblerait que oui : un des auteurs publie <a href="https://dustri.org/b/snuffleupagus-versus-recent-high-profile-vulnerabilities.html">chaque</a> <a href="https://dustri.org/b/snuffleupagus-versus-recent-high-profile-vulnerabilities-again.html">année</a> une rétrospective des résultats du logiciel contre les vulnérabilités les plus critiques. Force est de constater que la plupart des failles sont soit rendues inexploitables, soit le deviennent moins trivialement.</p> <p>Quid de la suite ? Bien que le projet ait été abandonné par la société l’ayant open-sourcé (<a href="https://www.nbs-system.com/">NBS-System</a>), un des auteurs principaux continue de maintenir et de faire évoluer le projet, qui continue son bonhomme de chemin, gagnant en fonctionnalités tout en perdant des bugs.</p> </div><div><a href="https://linuxfr.org/news/sortie-de-snuffleupagus-0-7-0-los-elefantes.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122799/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/news/sortie-de-snuffleupagus-0-7-0-los-elefantes#comments">ouvrir dans le navigateur</a> </p>
    • Li chevron_right

      Quatre années de wallabag.it

      Nicolas Lœuillet · pubsub.eckmul.net / linuxfr_news · Monday, 21 December, 2020 - 16:52 · 7 minutes

    <div><p>Nous sommes en décembre, mois-anniversaire de wallabag.it et donc l’heure de faire un petit point sur mon projet. </p> <p><abbr title="Note des modérateurs">N. D. M. :</abbr> <em>wallabag est une application libre de lecture différée (écrite en PHP) et wallabag.it la version service en ligne</em>. Le <a href="https://github.com/wallabag/wallabag">code</a> est sous licence MIT, et la dernière version <a href="https://github.com/wallabag/wallabag/releases/tag/2.4.0">2.4.0</a> est parue le 10 décembre 2020.</p> <p>Pour rappel : </p> <ul> <li> <a href="https://nicolas.loeuillet.org/billets/service-wallabag-it">Comment je vais tenter de gagner un peu d’argent avec un projet opensource</a> (décembre 2016)</li> <li> <a href="https://nicolas.loeuillet.org/billets/retours-mise-ligne-wallabagit">Retours sur la mise en ligne de wallabag.it</a> (décembre 2016)</li> <li> <a href="https://nicolas.loeuillet.org/billets/comment-je-vais-tenter-de-gagner-ma-vie-avec-un-projet-opensource">Comment je vais tenter de gagner ma vie avec un projet opensource</a> (février 2017)</li> <li> <a href="https://nicolas.loeuillet.org/billets/un-an-apres-faisons-le-point-sur-wallabag-it">Un an après, faisons le point sur wallabag.it</a> (novembre 2017)</li> <li> <a href="https://nicolas.loeuillet.org/billets/situation-apres-trois-annees-dactivites-pour-wallabag-it">Situation après trois années d’activité pour wallabag.it</a> (janvier 2020)</li> </ul> <p>En parallèle de cette activité (en micro-entrepreneur), je suis salarié à 80 % en tant que développeur web. Donc wallabag.it n’est pas mon activité principale et je n’y consacre pas énormément de temps. Et je ne fais aucune publicité du service. </p> </div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/tags/wallabag/public" hreflang="fr" href="https://linuxfr.org/redirect/107530">L’historique de wallabag sur LinuxFr.org</a></li><li>lien nᵒ 2 : <a title="https://linuxfr.org/news/situation-apres-trois-annees-d-activite-pour-wallabag-it" hreflang="fr" href="https://linuxfr.org/redirect/107531">Situation après trois années d’activité pour wallabag.it</a></li><li>lien nᵒ 3 : <a title="https://nicolas.loeuillet.org/" hreflang="fr" href="https://linuxfr.org/redirect/107532">Le blog de l&#39;auteur</a></li></ul><div><p>Pour info, j’ai démarré wallabag.it le 3 décembre 2016. </p> <p>Dans cette diffusion de données, je ne vais pas forcément chercher à comprendre / étudier telle ou telle donnée, ou alors réfléchir comment améliorer mon chiffre d’affaires. L’idée est d’être transparent avec mes clients et donner des idées à celles et ceux qui souhaiteraient se lancer (coucou <a href="https://www.flus.fr">Marien et Flus.fr</a>). </p> <h2 id="toc-les-offres-disponibles">Les offres disponibles</h2> <p>Je ne vais pas refaire l’historique du changement d’offres, ça se trouve dans les billets cités ci-dessus. </p> <p><strong>Par rapport à l’an dernier, j’ai changé ma manière de comptabiliser (oui je suis instable) : je fais ça du 1ᵉʳ janvier au 31 décembre</strong>. Il ne faut pas comparer au billet de l’an dernier qui n’est plus à jour. </p> <p>En l’état actuel des choses, aujourd’hui voici les offres disponibles : </p> <ul> <li>3 mois pour 3 €</li> <li>1 an pour 9 €</li> <li>1 an pour 25 € (abonnement de soutien) </li> </ul> <h2 id="toc-nombre-de-factures">Nombre de factures</h2> <p>Une facture est un abonnement, peu importe que ça soit pour 3 mois ou 1 an, et peu importe sa valeur. </p> <ul> <li>2016 : 89 (un seul mois d’activité)</li> <li>2017 : 662 factures </li> <li>2018 : 787 factures (+18,9%)</li> <li>2019 : 959 factures (+21,9%)</li> <li>2020 : 1194 (+24,5%) (approximatif car il reste quelques jours)</li> </ul> <p>Nombre moyen mensuel de factures : </p> <ul> <li>2016 : 89 (un seul mois d’activité)</li> <li>2017 : 55 factures / mois</li> <li>2018 : 65 factures / mois </li> <li>2019 : 79,9 factures / mois </li> <li>2020 : 99,5 factures / mois (approximatif car il reste quelques jours)</li> </ul> <h2 id="toc-chiffre-daffaires-ca">Chiffre d’affaires (CA)</h2> <ul> <li>2016 : 783 € (un seul mois d’activité)</li> <li>2017 : 6093 €</li> <li>2018 : 7593 € (+24,6%)</li> <li>2019 : 9481 € (+24,9%)</li> <li>2020 : 12112 € (+27,8%) (approximatif car il reste quelques jours)</li> </ul> <p>CA mensuel moyen :</p> <ul> <li>2016 : 783 € (un seul mois d’activité)</li> <li>2017 : 507 €</li> <li>2018 : 632 €</li> <li>2019 : 790 € </li> <li>2020 : 1009 € (approximatif car il reste quelques jours)</li> </ul> <p>Abonnement moyen (en moyenne, combien un client paie pour s’abonner) : </p> <ul> <li>2016 : 8,80 €</li> <li>2017 : 9,19 €</li> <li>2018 : 9,54 €</li> <li>2019 : 9,83 €</li> <li>2020 : 10,22 € (approximatif car il reste quelques jours)</li> </ul> <h2 id="toc-type-dabonnements">Type d’abonnements</h2> <ul> <li>2017 : 342 abonnements à 9 € (+145 à 12 €, prix au départ de l’abonnement), 32 abonnements à 25 € et 80 abonnements à 3 €</li> <li>2018 : 532 abonnements à 9 €, 93 abonnements à 25 € et 161 abonnements à 3 €</li> <li>2019 : 668 abonnements à 9 €, 118 abonnements à 25 € et 173 abonnements à 3 €</li> <li>2020 : 809 abonnements à 9 €, 158 abonnements à 25 € et 227 abonnements à 3 € (approximatif car il reste quelques jours)</li> </ul> <p>Sur cette partie, c’est compliqué d’avoir des choses très détaillées surtout pour 2017, car j’ai tenté plusieurs choses (changement d’abonnements), il y a aussi eu une offre « Anniversaire » etc. </p> <h2 id="toc-bilan">Bilan</h2> <h3 id="toc-dépenses">Dépenses</h3> <p>En 2020, j’ai dépensé pour 2 385 € de frais (hébergement, nom de domaine, prestation admin sys, etc.), soit 198€ en moyenne par mois. J’ai payé 837 € de commissions pour PayPal et PayPlug, mes prestataires de paiement en ligne. J’ai également payé environ 3 000 € de charges. </p> <h3 id="toc-résultat-net">Résultat net</h3> <ul> <li>2017 : 3 130 €</li> <li>2018 : 3 454 €</li> <li>2019 : 4 823 €</li> <li>2020 : 6 074 € (approximatif car il reste quelques jours)</li> </ul> <h2 id="toc-conclusion">Conclusion</h2> <p>Il y a surement plein de choses à faire pour étudier encore mieux ces chiffres, pour les améliorer, etc. Mais pas le temps. </p> <p>L’objectif que je m’étais fixé l’an dernier (1 000 factures et 10 000 € de CA) est rempli. </p> <p><strong>Objectif pour 2021</strong> : 15 000 € de CA et 1 500 factures ? Et ne pas trop augmenter mes frais mensuels. Ça s’annonce compliqué !</p> </div><div><a href="https://linuxfr.org/news/quatre-annees-de-wallabag-it.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122585/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/news/quatre-annees-de-wallabag-it#comments">ouvrir dans le navigateur</a> </p>
    • Li chevron_right

      Sortie de PrestaShop 1.7.7.0

      Mathieu Ferment · pubsub.eckmul.net / linuxfr_news · Thursday, 17 December, 2020 - 08:44 · 2 minutes

    <div><p>Après presque un an de développement, PrestaShop vient de sortir la version 1.7.7 de son système de gestion de contenu (CMS) de commerce en ligne.</p> <p><img src="//img.linuxfr.org/img/68747470733a2f2f6173736574732e70726573746173686f70322e636f6d2f73697465732f64656661756c742f66696c65732f696d675f72696768745f6865616465725f6f7074696d697a65645f315f355f312e706e67/img_right_header_optimized_1_5_1.png" alt="Créer une boutique en ligne" title="Source : https://assets.prestashop2.com/sites/default/files/img_right_header_optimized_1_5_1.png"></p> <p>Cette version est principalement tournée vers des améliorations pour les utilisateurs marchands ; les pages du Back Office dédiées à l’administration des commandes ont été refaites entièrement et repensées pour faciliter la tâche au marchand.</p> <p>D’autres fonctionnalités ont été également livrées : la création/gestion de devises non officielles, une recherche textuelle plus intelligente… ainsi qu’un gros lot de corrections de bogues (160) et la compatibilité avec <a href="https://fr.wikipedia.org/wiki/PHP">PHP</a> 7.3 (il était temps !).</p> <p>La liste complète des nouveautés est disponible dans les <a href="https://build.prestashop.com/news/prestashop-1-7-7-0-available/">notes de publication</a> (en anglais).</p> <p>La communauté PrestaShop est très active, aussi bien sur le dépôt <a href="https://github.com/PrestaShop/PrestaShop/">GitHub</a>, qui sert également au suivi des bogues, que sur le <a href="https://www.prestashop.com/forums/">forum</a> ou le channel <a href="https://github.com/PrestaShop/open-source/blob/master/slack/readme.md">Slack</a>.<br> N’hésitez pas à venir échanger avec nos communautés de marchands ou de développeurs !</p> </div><ul><li>lien nᵒ 1 : <a title="https://www.prestashop.com/fr" hreflang="fr" href="https://linuxfr.org/redirect/107523">PrestaShop</a></li><li>lien nᵒ 2 : <a title="https://build.prestashop.com/news/prestashop-1-7-7-0-available/" hreflang="en" href="https://linuxfr.org/redirect/107524">Notes de publication de la version 1.7.7.0</a></li><li>lien nᵒ 3 : <a title="https://www.prestashop.com/fr/telecharger" hreflang="fr" href="https://linuxfr.org/redirect/107525">Téléchargement</a></li></ul><div></div><div><a href="https://linuxfr.org/news/sortie-de-prestashop-1-7-7-0.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122593/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/news/sortie-de-prestashop-1-7-7-0#comments">ouvrir dans le navigateur</a> </p>
    • Li chevron_right

      CPU Ex0146 PHP8 tout neuf

      Da Scritch · pubsub.eckmul.net / linuxfr · Thursday, 15 October, 2020 - 09:11 · 1 minute

    <p>Dans notre <em>release</em> de cette semaine : PHP Unit, modules PHAR, <em>coding style</em> PSR 12 et un serveur applicatif. Nos invités sont <strong><a href="https://twitter.com/vicla123">Stéphanie Trumtel</a></strong> et <strong><a href="https://www.linkedin.com/in/romainmoro/">Romain Moro</a></strong>, de l'<a href="https://toulouse.afup.org/">AFUP Toulouse</a>.<br> Cette émission est la suite de <a href="https://cpu.dascritch.net/post/2020/10/08/Ex0145-25-ans-de-PHP">la précédente CPU Ex0145 : 25 ans de PHP</a></p> <p>Podcast, max de liens et commentaires : <a href="http://cpu.pm/0146">http://cpu.pm/0146</a></p> <p>Chapitres :</p> <ul> <li><a href="https://cpu.dascritch.net/post/2020/10/15/Bonjour-%C3%A0-toi%2C-Enfant-du-Futur-Imm%C3%A9diat-%3A-%C3%89l%C3%A9phantesque">Bonjour à toi, Enfant du Futur Immédiat : Éléphantesque</a></li> <li><a href="https://cpu.dascritch.net/post/2020/10/15/St%C3%A9phanie-Trumtel-et-Romain-Moro%2C-de-l-AFUP-Toulouse">Interview</a></li> </ul> <p>La semaine prochaine : Les codecs du son</p> <div><a href="https://linuxfr.org/users/dascritch/journaux/cpu-ex0146-php8-tout-neuf.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/121924/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/dascritch/journaux/cpu-ex0146-php8-tout-neuf#comments">ouvrir dans le navigateur</a> </p>
    • Sy chevron_right

      Местонахождение устройства в панели проблем Zabbix 3.4

      pubsub.slavino.sk / sysadmblog · Sunday, 13 September, 2020 - 08:00 edit · 1 minute

    На стартовой странице веб-интерфейса Zabbix по умолчанию отображается список актуальных проблем. Самая важная информация в этом списке - это время начала проблемы, узел сети, срабтавший триггер и длительность проблемы, но нет никакой информации о местоположении устройства. Если у вас небольшая сеть, расположенная не более чем по нескольким десяткам адресов, то хорошая система именования устройств может решить проблему поиска местонахождения устройства. Если же количество адресов, по которым находятся устройства, достигает нескольких тысяч, то правильное именование устройств становится трудной задачей.

    В Zabbix'е к каждому устройству можно прикрепить так называемые «инвентарные данные», среди которых есть поле адреса. Было бы неплохо показывать это поле в списке проблем, чтобы можно было без лишних телодвижений определить адрес устройства. К сожалению, Zabbix не предоставляет для этого штатных средств. Но к счастью, это можно сделать, внеся в исходный текст веб-интерфейса Zabbix небольшую правку.

    Интересующий нас виджет находится в файле frontends/php/app/views/monitoring.widget.problems.view.php

    Этот виджет фигурирует в списке маршрутов в файле frontends/php/include/classes/mvc/CRouter.php:
    'widget.problems.view'  => ['CControllerWidgetProblemsView',    'layout.widget',                'monitoring.widget.problems.view'],
    Класс CControllerWidgetProblemsView описан в файле frontends/php/app/controllers/CControllerWidgetProblemsView.php. Именно в этом классе готовятся данные, которые потом будут использованы в виджете для отображения. Данные об узлах, связанных с триггерами, в этом классе формируется при помощи функции getTriggersHostsList.

    Определение функции getTriggersHostsList находится в файле frontends/php/include/triggers.inc.php, для получения списка узлов с триггерами используется метод API host.get :
    $db_hosts = $hostids
    ? API::Host()->get([
    'output' => ['hostid', 'name', 'status', 'maintenanceid', 'maintenance_status', 'maintenance_type'],
    'selectGraphs' => API_OUTPUT_COUNT,
    'selectScreens' => API_OUTPUT_COUNT,
    'hostids' => array_keys($hostids),
    'preservekeys' => true
    ])
    : [];
    Внесём правку, которая добавит в этот список строку местоположения устройства из его инвентарных данных:
    Index: zabbix-3.4.12-1+buster/frontends/php/include/triggers.inc.php
    ===================================================================
    --- zabbix-3.4.12-1+buster.orig/frontends/php/include/triggers.inc.php
    +++ zabbix-3.4.12-1+buster/frontends/php/include/triggers.inc.php
    @@ -2170,6 +2170,7 @@ function getTriggersHostsList(array $tri
    'output' => ['hostid', 'name', 'status', 'maintenanceid', 'maintenance_status', 'maintenance_type'],
    'selectGraphs' => API_OUTPUT_COUNT,
    'selectScreens' => API_OUTPUT_COUNT,
    + 'selectInventory' => ['location'],
    'hostids' => array_keys($hostids),
    'preservekeys' => true
    ])
    Теперь эти данные нужно отобразить в виджете. Внесём соответствующую правку в файл frontends/php/app/views/monitoring.widget.problems.view.php:
    Index: zabbix-3.4.12-1+buster/frontends/php/app/views/monitoring.widget.problems.view.php
    ===================================================================
    --- zabbix-3.4.12-1+buster.orig/frontends/php/app/views/monitoring.widget.problems.view.php
    +++ zabbix-3.4.12-1+buster/frontends/php/app/views/monitoring.widget.problems.view.php
    @@ -54,6 +54,7 @@ $table = (new CTableInfo())
    $show_recovery_data ? _('Status') : null,
    _('Info'),
    ($data['sortfield'] === 'host') ? [_('Host'), $sort_div] : _('Host'),
    + ($data['sortfield'] === 'location') ? [_('Location'), $sort_div] : _('Location'),
    [
    ($data['sortfield'] === 'problem') ? [_('Problem'), $sort_div] : _('Problem'),
    ' &bullet; ',
    @@ -198,11 +199,19 @@ foreach ($data['data']['problems'] as $e
    ];
    }

    + $trigger_hosts = array_values($data['data']['triggers_hosts'][$trigger['triggerid']]);
    + $locations = array();
    + foreach($trigger_hosts as $host)
    + {
    + $locations[] = $host['inventory']['location'];
    + }
    +
    $table->addRow(array_merge($row, [
    $show_recovery_data ? $cell_r_clock : null,
    $show_recovery_data ? $cell_status : null,
    makeInformationList($info_icons),
    $triggers_hosts[$trigger['triggerid']],
    + join(', ', $locations),
    $description,
    (new CCol(
    ($problem['r_eventid'] != 0)
    Как видно, в правке:
    1. в таблицу был добавлен заголовок новой колонки Location,
    2. по каждому из триггеров формируется строка со списком адресов узлов, на значения элементов данных из которых опирается этот триггер,
    3. строки с адресами через запятую с пробелом склеиваются в одну строку,
    4. полученная строка добавляется в строку таблицы, в колонку Location.
    Готовую заплатку можно взять по ссылке zabbix3_4_12_frontend_location.patch .

    Značky: #3.4, #debian, #zabbix, #linux, #Linux, #buster, #php