From 63dbcb407ffe5625586f622db3c521ae3c037133 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Fri, 18 Oct 2024 00:39:53 +0200
Subject: [PATCH] more options

---
 filter_inputs.php | 17 +++++-----
 options.php       | 83 ++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 81 insertions(+), 19 deletions(-)

diff --git a/filter_inputs.php b/filter_inputs.php
index 341687b..98f60a2 100644
--- a/filter_inputs.php
+++ b/filter_inputs.php
@@ -68,21 +68,22 @@ if ($preset && isset($presets[$preset])) {
     '-O'             => FILTER_VALIDATE_BOOLEAN,
     '--osscan-limit' => FILTER_VALIDATE_BOOLEAN,
     '--osscan-guess' => FILTER_VALIDATE_BOOLEAN,
-// SERVICE/VERSION DETECTION:
+    '--max-os-tries' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
+// TIMING AND PERFORMANCE:
     '-T0'                   => FILTER_VALIDATE_BOOLEAN,
     '-T1'                   => FILTER_VALIDATE_BOOLEAN,
     '-T2'                   => FILTER_VALIDATE_BOOLEAN,
     '-T3'                   => FILTER_VALIDATE_BOOLEAN,
     '-T4'                   => FILTER_VALIDATE_BOOLEAN,
     '-T5'                   => FILTER_VALIDATE_BOOLEAN,
-    '--min-hostgroup'       => FILTER_VALIDATE_INT,
-    '--max-hostgroup'       => FILTER_VALIDATE_INT,
-    '--min-parallelism'     => FILTER_VALIDATE_INT,
-    '--max-parallelism'     => FILTER_VALIDATE_INT,
+    '--min-hostgroup'       => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
+    '--max-hostgroup'       => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
+    '--min-parallelism'     => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
+    '--max-parallelism'     => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
     '--min-rtt-timeout'     => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
     '--max-rtt-timeout'     => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
     '--initial-rtt-timeout' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
-    '--max-retries'         => FILTER_VALIDATE_INT,
+    '--max-retries'         => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
     '--host-timeout'        => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
     '--scan-delay'          => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
     '--max-scan-delay'      => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $tempoRegex]],
@@ -109,9 +110,9 @@ if ($preset && isset($presets[$preset])) {
     '-h'             => FILTER_VALIDATE_BOOLEAN,
     '--stylesheet'   => FILTER_VALIDATE_URL,
 // lanScan
-    'saveAs'        => ["filter" => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $fileNameRegex]],
+    'saveAs'        => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => $fileNameRegex]],
     'compareWith'   => FILTER_VALIDATE_URL,
-    'refreshPeriod' => ["filter" => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
+    'refreshPeriod' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0]],
     'sudo'          => FILTER_VALIDATE_BOOLEAN,
   ], false);
 }
\ No newline at end of file
diff --git a/options.php b/options.php
index a602273..ed1c970 100755
--- a/options.php
+++ b/options.php
@@ -56,10 +56,7 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
       </div>
 
       <div class="ui styled fluid accordion field">
-        <div class="title">
-          <i class="icon dropdown"></i>
-          Spécification des cibles
-        </div>
+        <div class="title"><i class="icon dropdown"></i>Spécification des cibles</div>
         <div class="content">
           <div class="field">
             <label for="excludeInput" title="--exclude">Exclure les hôtes ou réseaux</label>
@@ -74,10 +71,7 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
           </div>
         </div>
 
-        <div class="title">
-          <i class="icon dropdown"></i>
-          Découverte des hôtes actifs
-        </div>
+        <div class="title"><i class="icon dropdown"></i>Découverte des hôtes actifs</div>
         <div class="content">
           <div class="inline field">
             <div class="ui toggle checkbox">
@@ -310,10 +304,77 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
           </div>
         </div>
 
-        <div class="title">
-          <i class="icon dropdown"></i>
-          Divers
+        <div class="title"><i class="icon dropdown"></i>Détection de services et de versions</div>
+        <div class="content">
+          <div class="inline field">
+            <div class="ui toggle checkbox" title="-sV">
+              <input type="checkbox" id="sVCheckbox" name="-sV" <?= $options['-sV'] ?? false ? 'checked' : ''; ?> />
+              <label for="sVCheckbox">Détection de version</label>
+            </div>
+          </div>
+        
+          <div class="inline field">
+            <div class="ui toggle checkbox">
+              <input type="checkbox" id="allportsCheckbox" name="--allports" <?= $options['--allports'] ?? false ? 'checked' : ''; ?> />
+              <label for="allportsCheckbox" title="--allports">N'exclure aucun port de la détection de version</label>
+            </div>
+          </div>
+
+          <div class="field">
+            <label for="versionIntensitySelect" title="--version-intensity">Intensité des tests de version</label>
+            <select class="ui dropdown" id="versionIntensitySelect" name="--version-intensity" value="<?= $options["--version-intensity"] ?? ""?>">
+              <option value="0">0</option>
+              <option value="1">1</option>
+              <option value="2">Léger</option>
+              <option value="3">3</option>
+              <option value="4">4</option>
+              <option value="5">5</option>
+              <option value="6">6</option>
+              <option value="7">Défaut</option>
+              <option value="8">8</option>
+              <option value="9">Tous</option>
+            </select>
+          </div>
+        
+          <div class="inline field">
+            <div class="ui toggle checkbox">
+              <input type="checkbox" id="sRCheckbox" name="-sR" <?= $options['-sR'] ?? false ? 'checked' : ''; ?> />
+              <label for="sRCheckbox" title="-sR">Scan RPC</label>
+            </div>
+          </div>
         </div>
+
+        <div class="title"><i class="icon dropdown"></i>Détection du système d'exploitation</div>
+        <div class="content">
+          <div class="inline field">
+            <div class="ui toggle checkbox">
+              <input type="checkbox" id="OCheckbox" name="-O" <?= $options['-O'] ?? false ? 'checked' : ''; ?> />
+              <label for="OCheckbox" title="-O">Détecter le système d'exploitation</label>
+            </div>
+          </div>
+        
+          <div class="inline field">
+            <div class="ui toggle checkbox">
+              <input type="checkbox" id="osscan-limitCheckbox" name="--osscan-limit" <?= $options['--osscan-limit'] ?? false ? 'checked' : ''; ?> />
+              <label for="osscan-limitCheckbox" title="--osscan-limit">Seulement les cibles prometteuses</label>
+            </div>
+          </div>
+          
+          <div class="inline field">
+            <div class="ui toggle checkbox">
+              <input type="checkbox" id="osscan-guessCheckbox" name="--osscan-guess" <?= $options['--osscan-guess'] ?? false ? 'checked' : ''; ?> />
+              <label for="osscan-guessCheckbox" title="--osscan-guess">Essayer de deviner</label>
+            </div>
+          </div>
+          
+          <div class="field">
+            <label for="maxOSTriesInput">Nombre d'essais maximum</label>
+            <input type="number" min="0" id="maxOSTriesInput" name="--max-os-tries" placeholder="Nombre d'essais"
+              value="<?= $options["--max-os-tries"] ?? "" ?>">
+          </div>
+        </div>
+
+        <div class="title"><i class="icon dropdown"></i>Divers</div>
         <div class="content">
           <div class="field">
             <label for="stylesheetSelect" title="--stylesheet">Feuille de style</label>