darcosion / Echosounder

petit programme marrant
MIT License
14 stars 1 forks source link

Refacto système d'appel de scan #59

Closed darcosion closed 2 years ago

darcosion commented 2 years ago

Actuellement, le système de scan nécessite à chaque fois qu'on veut créer un nouveau scan de recopier 3-4 fonctions.

D'abord une fonction de broadcast depuis un menu :

  $scope.clickScanProfiling = function() {
    console.log("emit profiling scan request");
    $rootScope.$broadcast('request_profiling_scan', {'cible' : $scope.machineCible});
  }

Dans le composant graph, une fonction de réception du broadcast :

  $scope.$on('request_profiling_scan', function(event, args) {
    $scope.$parent.sendToastData('Profiling', "lancement d'un scan");
    $scope.getProfilingScan(args.cible);
  });

Enfin, une fonction d'appel API du scan ici :

  // fonctions de profiling machine (OS, device, ...)
  $scope.getProfilingScan = function(cible) {
    let req = {
      method : 'POST',
      url : '/json/profiling_scan',
      headers: {'Content-Type': 'application/json'},
      data : {'cible' : cible},
    };

    $http(req).then(
      // si la requête passe :

      function(response) {
        $scope.$parent.sendToastData('Profiling Scan', "réception d'un scan");
        console.log(response.data);
        // on met à jour le node concerné via une fonction de sélection de node
        $scope.updateNodebyIP(cible, 'profiling', response.data['scan']);
      },
      // si la requête échoue :
      function(error) {
        $scope.$parent.sendToastData('Profiling Scan', "erreur Scan : " + error);
        console.log(error);
      }
    );
  };

@Heremtec m'avais fait remarquer qu'il y avait du code utilisé qui était redondant et je suis d'accord avec lui. A priori, on pourrais réduire ça à 1 fonction en automatisant le broadcast et sa réception qui sont des éléments généralisables. redondant

darcosion commented 2 years ago

Un refacto a été effectué ici : 233308505d10b8f8f36edbf689b127152272f785

Il n'est pas parfait mais le gros du travail est fait. Une fonction de réception de request_scan unique a été codé qui rebalance à un scan selon une liste qui est tout de même beaucoup plus clair : https://github.com/darcosion/Echosounder/blob/233308505d10b8f8f36edbf689b127152272f785/static/main.js#L906-L916

Quand on vois : 1 file changed, 47 insertions(+), 64 deletions(-) C'est déjà pas mal.