From f2af89330363ea3e8ca362bedf37e3ec6f195a48 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Tue, 22 Oct 2024 00:35:00 +0200
Subject: [PATCH] more options

---
 index.php | 137 ++++++++++++++++++++++++++++++++++++++++++++----------
 style.css |   8 ++++
 2 files changed, 121 insertions(+), 24 deletions(-)

diff --git a/index.php b/index.php
index 7f45f6c..7c703a6 100755
--- a/index.php
+++ b/index.php
@@ -66,7 +66,7 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
           
           <div class="field">
             <label for="iRInput" title="-iR">Nombre de cibles au hasard</label>
-            <input id="iRInput" type="number" min="0" name="-iR" placeholder="Nombre de cibles"
+            <input id="iRInput" type="number" min="0" name="-iR" placeholder="Nombre"
               value="<?= $options['-iR'] ?? "" ?>">
           </div>
         </div>
@@ -322,7 +322,7 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
           
           <div class="field">
             <label for="versionIntensityInput" title="--version-intensity">Intensité des tests de version</label>
-            <input type="number" min="0" max="9" id="versionIntensityInput" name="--version-intensity" placeholder="Intensité"
+            <input type="number" min="0" max="9" id="versionIntensityInput" name="--version-intensity" placeholder="0-9"
               value="<?= $options["--version-intensity"] ?? "" ?>" title="2: léger, 9: tous, défaut: 7">
           </div>
         
@@ -345,14 +345,14 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
 
           <div class="field">
             <label for="scriptInput">Scripts</label>
-            <input id="scriptInput" type="text" name="--script" placeholder="script"
+            <input id="scriptInput" type="text" name="--script" placeholder="Nom"
               title="<catégories|répertoire|nom|all>" list="scripts" pattern="[a-z][a-z0-9\-\.\/]*"
               value="<?= $options["--script"] ?? ""; ?>">
           </div>
 
           <div class="field">
             <label for="scriptArgsInput" title="--script-args">Arguments des scripts</label>
-            <input id="scriptArgsInput" type="text" name="--script-args" placeholder="nom=valeur"
+            <input id="scriptArgsInput" type="text" name="--script-args" placeholder="arg=valeur"
               pattern='[a-zA-Z][a-zA-Z0-9\-_]*=[^"]+(,[a-zA-Z][a-zA-Z0-9\-_]*=[^"]+)?' value="<?= $options['--script-args'] ?? "" ?>"
               title="<n1=v1,[n2=v2,...]>">
           </div>
@@ -397,7 +397,7 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
           
           <div class="field">
             <label for="maxOSTriesInput" title="--max-os-tries">Nombre d'essais maximum</label>
-            <input type="number" min="0" id="maxOSTriesInput" name="--max-os-tries" placeholder="Tentatives"
+            <input type="number" min="0" id="maxOSTriesInput" name="--max-os-tries" placeholder="Nombre"
               value="<?= $options["--max-os-tries"] ?? "" ?>">
           </div>
         </div>
@@ -427,25 +427,60 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
               </div>
               <div class="field">
                 <label for="maxHostgroupInput" title="--max-hostgroup">Maximum</label>
-                <input id="maxHostgroupInput" type="number" max="0" placeholder="Nombre"
+                <input id="maxHostgroupInput" type="number" min="0" placeholder="Nombre"
                 value="<?= $options["--max-hostgroup"] ?? "" ?>"
                 oninput="minHostgroupInput.max = maxHostgroupInput.value">
               </div>
             </div>
           </div>
+          
+          <div class="field">
+            <label>Parallélisation des paquets de tests</label>
+            <div class="two fields">
+              <div class="field">
+                <label for="minParallelismInput" title="--min-parallelism">Minimum</label>
+                <input id="minParallelismInput" type="number" min="0" placeholder="Nombre"
+                value="<?= $options["--min-parallelism"] ?? "" ?>"
+                oninput="maxParallelismInput.min = minParallelismInput.value">
+              </div>
+              <div class="field">
+                <label for="maxParallelismInput" title="--max-parallelism">Maximum</label>
+                <input id="maxParallelismInput" type="number" min="0" placeholder="Nombre"
+                value="<?= $options["--max-parallelism"] ?? "" ?>"
+                oninput="minParallelismInput.max = maxParallelismInput.value">
+              </div>
+            </div>
+          </div>
 
           <div class="field">
             <label>Temps d'aller-retour des paquets de tests</label>
-            <div class="two fields">
+            <div class="three fields">
               <div class="field">
-                <label for="minRTTInput" title="--min-rtt-timeout">Minimum</label>
+                <label for="initialRTTNumber" title="--initial-rtt-timeout">Initial</label>
                 <div class="ui right labeled input">
-                  <input type="number" min="0" id="minRTTDuration" placeholder="Durée"
-                    oninput="minRTTHidden.value = minRTTDuration.value? minRTTDuration.value+minRTTUnit.value: ''; maxRTTHidden.min=minRTTHidden.value"
+                  <input type="number" min="0" id="initialRTTNumber" placeholder="Durée"
+                    oninput="initialRTTHidden.value = initialRTTNumber.value? initialRTTNumber.value+initialRTTUnit.value: ''; maxRTTHidden.initial=initialRTTHidden.value"
+                    <?= preg_match("/^\d+/", $options["--initial-rtt-timeout"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
+                    <select id="initialRTTUnit" class="ui dropdown label"
+                      oninput="initialRTTHidden.value = initialRTTNumber.value? initialRTTNumber.value+initialRTTUnit.value: ''">
+                      <option value="">ms</option>
+                      <option value="s" <?=substr($options["--initial-rtt-timeout"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
+                      <option value="m" <?=substr($options["--initial-rtt-timeout"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
+                      <option value="h" <?=substr($options["--initial-rtt-timeout"]??"", -1)=="h"?"selected":"" ?>>heures</option>
+                    </select>
+                </div>
+                <input id="initialRTTHidden" type="hidden" name="--initial-rtt-timeout"
+                  value="<?= $options["--initial-rtt-timeout"] ?? "" ?>">
+              </div>
+              <div class="field">
+                <label for="minRTTNumber" title="--min-rtt-timeout">Minimum</label>
+                <div class="ui right labeled input">
+                  <input type="number" min="0" id="minRTTNumber" placeholder="Durée"
+                    oninput="minRTTHidden.value = minRTTNumber.value? minRTTNumber.value+minRTTUnit.value: ''; maxRTTHidden.min=minRTTHidden.value"
                     <?= preg_match("/^\d+/", $options["--min-rtt-timeout"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
                     <select id="minRTTUnit" class="ui dropdown label"
-                      oninput="minRTTHidden.value = minRTTDuration.value? minRTTDuration.value+minRTTUnit.value: ''">
-                      <option value="">millisecondes</option>
+                      oninput="minRTTHidden.value = minRTTNumber.value? minRTTNumber.value+minRTTUnit.value: ''">
+                      <option value="">ms</option>
                       <option value="s" <?=substr($options["--min-rtt-timeout"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
                       <option value="m" <?=substr($options["--min-rtt-timeout"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
                       <option value="h" <?=substr($options["--min-rtt-timeout"]??"", -1)=="h"?"selected":"" ?>>heures</option>
@@ -455,14 +490,14 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
                   value="<?= $options["--min-rtt-timeout"] ?? "" ?>">
               </div>
               <div class="field">
-                <label for="maxRTTInput" title="--max-rtt-timeout">Maximum</label>
+                <label for="maxRTTNumber" title="--max-rtt-timeout">Maximum</label>
                 <div class="ui right labeled input">
-                  <input type="number" max="0" id="maxRTTDuration" placeholder="Durée"
-                    oninput="maxRTTHidden.value = maxRTTDuration.value? maxRTTDuration.value+maxRTTUnit.value: ''; minRTTHidden.max=maxRTTHidden.value"
+                  <input type="number" min="0" id="maxRTTNumber" placeholder="Durée"
+                    oninput="maxRTTHidden.value = maxRTTNumber.value? maxRTTNumber.value+maxRTTUnit.value: ''; minRTTHidden.max=maxRTTHidden.value"
                     <?= preg_match("/^\d+/", $options["--max-rtt-timeout"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
                   <select id="maxRTTUnit" class="ui dropdown label"
-                    oninput="maxRTTHidden.value = maxRTTDuration.value? maxRTTDuration.value+maxRTTUnit.value: ''">
-                    <option value="">millisecondes</option>
+                    oninput="maxRTTHidden.value = maxRTTNumber.value? maxRTTNumber.value+maxRTTUnit.value: ''">
+                    <option value="">ms</option>
                     <option value="s" <?=substr($options["--max-rtt-timeout"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
                     <option value="m" <?=substr($options["--max-rtt-timeout"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
                     <option value="h" <?=substr($options["--max-rtt-timeout"]??"", -1)=="h"?"selected":"" ?>>heures</option>
@@ -473,7 +508,67 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
               </div>
             </div>
           </div>
+          
+          <div class="field">
+            <label for="maxRetriesInput" title="--max-retries">Nombre de retransmissions des paquets de tests des scans de ports</label>
+            <input type="number" min="0" id="maxRetriesInput" name="--max-retries" placeholder="Nombre"
+              value="<?= $options["--max-retries"] ?? "" ?>">
+          </div>
 
+          <div class="field">
+            <label for="hostTimoutInput" title="--host-timeout">Délai d'expiration du scan d'un hôte trop lent</label>
+            <div class="ui right labeled input">
+              <input type="number" min="0" id="hostTimoutNumber" placeholder="Durée"
+                oninput="hostTimoutHidden.value = hostTimoutNumber.value? hostTimoutNumber.value+hostTimoutUnit.value: ''"
+                <?= preg_match("/^\d+/", $options["--host-timeout"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
+              <select id="hostTimoutUnit" class="ui dropdown label"
+                oninput="hostTimoutHidden.value = hostTimoutNumber.value? hostTimoutNumber.value+hostTimoutUnit.value: ''">
+                <option value="">ms</option>
+                <option value="s" <?=substr($options["--host-timeout"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
+                <option value="m" <?=substr($options["--host-timeout"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
+                <option value="h" <?=substr($options["--host-timeout"]??"", -1)=="h"?"selected":"" ?>>heures</option>
+              </select>
+            </div>
+            <input id="hostTimoutHidden" type="hidden" name="--host-timeout"
+              value="<?= $options["--host-timeout"] ?? "" ?>">
+          </div>
+
+          <div class="two fields">
+            <div class="field">
+              <label for="scanDelayNumber" title="--scan-delay">Délai entre les paquets de tests</label>
+              <div class="ui right labeled input">
+                <input type="number" min="0" id="scanDelayNumber" placeholder="Durée"
+                  oninput="scanDelayHidden.value = scanDelayNumber.value? scanDelayNumber.value+scanDelayUnit.value: ''"
+                  <?= preg_match("/^\d+/", $options["--scan-delay"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
+                  <select id="scanDelayUnit" class="ui dropdown label"
+                    oninput="scanDelayHidden.value = scanDelayNumber.value? scanDelayNumber.value+scanDelayUnit.value: ''">
+                    <option value="">ms</option>
+                    <option value="s" <?=substr($options["--scan-delay"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
+                    <option value="m" <?=substr($options["--scan-delay"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
+                    <option value="h" <?=substr($options["--scan-delay"]??"", -1)=="h"?"selected":"" ?>>heures</option>
+                  </select>
+              </div>
+              <input id="scanDelayHidden" type="hidden" name="--scan-delay"
+                value="<?= $options["--scan-delay"] ?? "" ?>">
+            </div>
+            <div class="field">
+              <label for="maxScanDelay" title="--max-scan-delay">Maximum</label>
+              <div class="ui right labeled input">
+                <input type="number" min="0" id="maxScanDelay" placeholder="Durée"
+                  oninput="maxRTTHidden.value = maxScanDelay.value? maxScanDelay.value+maxRTTUnit.value: ''"
+                  <?= preg_match("/^\d+/", $options["--max-scan-delay"] ?? "", $matches) ? "value='{$matches[0]}'" : "" ?>>
+                <select id="maxRTTUnit" class="ui dropdown label"
+                  oninput="maxRTTHidden.value = maxScanDelay.value? maxScanDelay.value+maxRTTUnit.value: ''">
+                  <option value="">ms</option>
+                  <option value="s" <?=substr($options["--max-scan-delay"]??"", -1)=="s"?"selected":"" ?>>secondes</option>
+                  <option value="m" <?=substr($options["--max-scan-delay"]??"", -1)=="m"?"selected":"" ?>>minutes</option>
+                  <option value="h" <?=substr($options["--max-scan-delay"]??"", -1)=="h"?"selected":"" ?>>heures</option>
+                </select>
+              </div>
+              <input id="maxRTTHidden" type="hidden" name="--max-scan-delay"
+                value="<?= $options["--max-scan-delay"] ?? "" ?>">
+            </div>
+          </div>
         </div>
 
         <div class="title"><i class="icon dropdown"></i>Divers</div>
@@ -646,13 +741,7 @@ foreach ([$DATADIR, $NMAPDIR] as $dir) {
 
     $(".ui.accordion").accordion()
 
-    $("#compareWithSelect").dropdown({
-      clearable: true
-    })
-    $("#minRTTUnit").dropdown({
-      clearable: true
-    })
-    $("#maxRTTUnit").dropdown({
+    $(".ui.dropdown").dropdown({
       clearable: true
     })
 
diff --git a/style.css b/style.css
index cfc2692..6425104 100644
--- a/style.css
+++ b/style.css
@@ -41,6 +41,14 @@ main {
     margin-top: 0;
 }
 
+.ui.dropdown.label {
+    min-width: auto;
+}
+
+.ui.dropdown.label> .remove.icon {
+  right: 2.3em;
+}
+
 .toast-container .ui.header {
     text-transform: capitalize;
 }