Accueil Blog Acumatica Hackathon 2022 : Disséquer un Centurion - Partie II

Acumatica Hackathon 2022 : Disséquer un Centurion - Partie II

Dans cet article en deux parties, Brian Stevens et Gerhart van den Heever discutent du projet gagnant du hackathon de l'équipe Theta - Acumatica Centurion. Le projet Centurion se prémunit contre les fichiers malveillants et peu recommandables et tire la sonnette d'alarme lorsque quelqu'un tente de télécharger des fichiers suspects vers Acumatica. Qu'ils proviennent d'écrans standards, de services web tiers ou de l'application Acumatica Mobile, Acumatica Centurion ne baisse jamais sa garde.
Gerhard van den Heever | 16 février 2022

Acumatica Hackathon 2022 : Disséquer un Centurion - Partie II

Dans la première partie, Brian Stevens a décrit comment Acumatica Centurion intercepte les fichiers pour l'analyse de l'IA. Si vous l'avez manquée, vous pouvez la lire ici.

Introduction

Bien que les tests de téléchargement effectués à partir d'un écran Acumatica standard et de l'application mobile Acumatica aient été assez faciles à réaliser, l'équipe Theta avait besoin de prouver que la méthodologie mise en œuvre fonctionnerait quelle que soit la manière dont les fichiers sont téléchargés dans Acumatica. Cela signifie que nous avions besoin d'un outil pour jouer le rôle d'un systèmetiers utilisant des services web pour envoyer des pièces jointes dans Acumatica. Ces efforts se sont concentrés sur la création de l'utilitaire de téléchargement en masse en tant qu'application Windows autonome qui utilise des services web pour télécharger des fichiers.

L'une des caractéristiques étonnantes d'Acumatica est que le composant des services web est une caractéristique standard de l'application. Pour chaque écran d'Acumatica, l'application dispose d'un service web qui peut être utilisé pour insérer, modifier ou supprimer des enregistrements de l'application. Ce qui est encore mieux, c'est que lorsque des écrans personnalisés sont créés, ils sont prêts pour les services web et un développeur n'a pas besoin de passer beaucoup de temps à fournir les méthodes de point de terminaison des services web.

Construire les éléments de base du projet

Examinons maintenant deux sections du projet : d'une part, la méthode web qui fournit une connexion pour les systèmestiers et, d'autre part, le systèmetiers que nous avons utilisé dans le cadre du projet, à savoir une application Windows Forms.

Pour notre projet, nous avions besoin d'un écran de journal pour fournir aux administrateurs du système des informations sur les pièces jointes lorsqu'elles sont téléchargées dans Acumatica. L'écran de journalisation fournit des informations sur le fichier lui-même et sur la personne qui tente de le télécharger. Ces résultats sont reçus de Centurion avant d'être autorisés à être téléchargés. Il s'agit en quelque sorte d'un processus de quarantaine et d'un écran de journalisation pour les administrateurs.

Une fois l'écran créé et testé, l'étape suivante consistait à ajouter des services web. Pour notre nouveau service web, un point de terminaison a été créé et un objet d'écran personnalisé a été défini. Pour l'objet, les champs requis ont été ajoutés et la méthode est maintenant prête à être utilisée.

Vous pouvez voir ci-dessous notre point d'accès aux services web et les champs de données que nous avons mappés :

Ensuite, nous avons créé un utilitaire basé sur Windows qui serait considéré comme un 3rd système tiers. L'application contient des informations (fichiers) qui doivent être transférées vers Acumatica. Pour nos besoins, l'utilitaire devait lire les fichiers d'un dossier et charger chaque fichier individuellement dans Acumatica.

L'utilitaire d'application utilise le dossier standard Microsoft Directory.GetFiles() pour renvoyer tous les noms de fichiers du dossier et créer un objet FileInfo. Lorsque le fichier est lu, il est converti en un tableau d'octets et déplacé vers un flux de mémoire. En utilisant le flux de mémoire, l'objet est envoyé à Acumatica en utilisant une simple méthode PUT du fichier et lié à l'enregistrement du journal créé en utilisant les bibliothèques Newtonsoft.Json. Lorsque la méthode PUT appelle les méthodes d'attachement d'Acumatica, les informations sont soumises à Cloudmersive pour une analyse plus approfondie et fournit les résultats à l'enregistrement de journal spécifié.

Étape 1 - Obtenir les fichiers

L'application Windows lit les fichiers à partir d'un répertoire spécifié pour lancer le processus de téléchargement des fichiers :

GIST: https://gist.github.com/Gerhard-ZA/3b67ba2ff66fdd606d930a366218583f

Étape 2 - Créer une entrée de journal dans Acumatica

Nous créons maintenant l'enregistrement utilisé pour le journal d'entrée qui contient les résultats de Cloudmersive:

GIST : https://gist.github.com/Gerhard-ZA/f99159f6002abcbc2f3a756ff0c8431e

Étape 3 - Conversion du fichier en flux de mémoire

Ensuite, chaque fichier est lu dans le flux de fichiers et converti en tableau d'octets :

GIST: https://gist.github.com/Gerhard-ZA/4fb8b62501783714fc565cef66ca1d21

Étape 4 - Envoyer les données à Acumatica, en utilisant les services Web PUT

Enfin, les données du flux de mémoire sont téléchargées vers Acumatica.

GIST: https://gist.github.com/Gerhard-ZA/8c661c9f9723da53a4a96522db934daa

Extension de la solution

Nous pouvons facilement étendre la solution pour accomplir des choses plus utiles :

  1. Migration des données - téléchargement d'images en masse à partir d'un système de dossiers, redimensionnement et rattachement à des articles d'inventaire
  2. Systèmestiers qui introduisent des données et des documents EDI
  3. Utilisateurs qui prennent des photos pour les télécharger - vérifier NSFW et la taille du fichier
  4. Analyser les documents téléchargés pour détecter d'éventuels virus

Résumé

La plateforme Acumatica xRP nous a permis d'étendre facilement le système de base pour ajouter un scénario d'utilisation avec un ensemble d'exigences commerciales sur lesquelles les membres de notre équipe s'étaient mis d'accord avant de s'envoler pour Las Vegas où se tenait le hackathon. Lors de nos sessions de planification, nous avons choisi un projet utilisant une sécurité avancée sans avoir à créer de nouveaux correctifs ou fichiers qui modifient le cœur du système lui-même. Nous avons simplement étendu Acumatica pour permettre l'accès à la valeur commerciale que nous avons identifiée pour notre projet. Nous avons pu exécuter notre plan avec succès dans le temps imparti du hackathon grâce à l'excellent travail de tous les membres de notre équipe - à peine 12 heures.

Pour en savoir plus sur notre équipe et les autres équipes gagnantes, lisez le récapitulatif du Hackathon 2022 ici.

Bon codage !


Présentation PowerPoint de l'équipe Theta Hackathon (PDF)

Auteur du blog

Gerhard est directeur technique chez Astraia Technology (VAR) et FBA Software (ISV). Il est responsable de la création et de la livraison des solutions de l'organisation et des produits pour Acumatica. Il a plus de 10 ans d'expérience dans le développement de logiciels dans le domaine de l'ERP et est généralement impliqué en tant qu'architecte du système pendant les projets. Né et élevé en Afrique, Gerhard aime la nature et profite de chaque occasion pour faire un safari avec sa famille ou profiter des vignobles du Cap.

Recevez les mises à jour du blog dans votre boîte de réception.