targets no longer required

This commit is contained in:
Adrien MALINGREY 2024-10-16 20:08:49 +02:00
parent ec917b4602
commit 5e76b92b96
7 changed files with 51 additions and 49 deletions

View File

@ -17,6 +17,8 @@ $HOSTSCAN_OPTIONS = [
'stylesheet' => "$BASEDIR/hostScan.xsl" 'stylesheet' => "$BASEDIR/hostScan.xsl"
]; ];
$refreshPeriod = 60;
$sudo = true;
$SCANSDIR = 'scans'; $SCANSDIR = 'scans';
$DATADIR = '/usr/share/nmap'; $DATADIR = '/usr/share/nmap';

View File

@ -12,10 +12,6 @@ $fileNameRegex = '/^[^<>:"\/|?]+$/';
$targets = filter_input(INPUT_GET, 'targets', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]); $targets = filter_input(INPUT_GET, 'targets', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]);
$lan = filter_input(INPUT_GET, 'lan', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]); $lan = filter_input(INPUT_GET, 'lan', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]);
$host = filter_input(INPUT_GET, 'host', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]); $host = filter_input(INPUT_GET, 'host', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $targetsListRegex], "flags" => FILTER_NULL_ON_FAILURE]);
$saveAs = filter_input(INPUT_GET, 'saveAs', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $fileNameRegex]]);
$compareWith = filter_input(INPUT_GET, 'compareWith', FILTER_VALIDATE_URL);
$refreshPeriod = filter_input(INPUT_GET, 'refreshPeriod', FILTER_VALIDATE_INT, ['options' => ['min_range' => 0]]);
$sudo = filter_input(INPUT_GET, 'sudo', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($lan) { if ($lan) {
$targets = $lan; $targets = $lan;
@ -116,4 +112,9 @@ if ($lan) {
'h' => FILTER_VALIDATE_BOOLEAN, 'h' => FILTER_VALIDATE_BOOLEAN,
'stylesheet' => FILTER_VALIDATE_URL, 'stylesheet' => FILTER_VALIDATE_URL,
], false) ?: $LANSCAN_OPTIONS; ], false) ?: $LANSCAN_OPTIONS;
$saveAs = filter_input(INPUT_GET, 'saveAs', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => $fileNameRegex]]);
$compareWith = filter_input(INPUT_GET, 'compareWith', FILTER_VALIDATE_URL);
$refreshPeriod = filter_input(INPUT_GET, 'refreshPeriod', FILTER_VALIDATE_INT, ['options' => ['min_range' => 0]]);
$sudo = filter_input(INPUT_GET, 'sudo', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
} }

View File

@ -79,7 +79,7 @@
<form id="lanScanForm" class="right menu" onsubmit="targetsInputDiv.classList.add('loading')"> <form id="lanScanForm" class="right menu" onsubmit="targetsInputDiv.classList.add('loading')">
<div class="ui category search item"> <div class="ui category search item">
<div id="targetsInputDiv" class="ui icon input"> <div id="targetsInputDiv" class="ui icon input">
<input class="prompt" type="text" id="targetsInput" name="targets" oninput="hiddenInput.value=this.value" required="" <input class="prompt" type="text" id="targetsInput" name="targets" oninput="hiddenInput.value=this.value"
pattern="[a-zA-Z0-9._\/ \-]+" value="{$targets}" placeholder="Scanner un réseau..." pattern="[a-zA-Z0-9._\/ \-]+" value="{$targets}" placeholder="Scanner un réseau..."
title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc. title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.
Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/> Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/>
@ -88,7 +88,7 @@ Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/>
<input type="hidden" name="compareWith" value="{$nextCompareWith}"/> <input type="hidden" name="compareWith" value="{$nextCompareWith}"/>
<input type="hidden" name="refreshPeriod" value="{$refreshPeriod}"/> <input type="hidden" name="refreshPeriod" value="{$refreshPeriod}"/>
<button style="display: none;" type="submit" formmethod="get" formaction="{$basedir}/scan.php"></button> <button style="display: none;" type="submit" formmethod="get" formaction="{$basedir}/scan.php"></button>
<button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/options.php" onclick="targetsInput.required=false"> <button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/options.php">
<i class="sliders horizontal icon"></i> <i class="sliders horizontal icon"></i>
</button> </button>
<button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/scan.php" onclick="this.getElementsByTagName('i')[0].className = 'loading spinner icon'"> <button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/scan.php" onclick="this.getElementsByTagName('i')[0].className = 'loading spinner icon'">
@ -169,16 +169,18 @@ $.toast({
</xsl:if> </xsl:if>
hiddenButton.onclick = function(event) { hiddenButton.onclick = function(event) {
targetsInputDiv.classList.add('loading') if (lanScanForm.form.checkValidity()) {
$.toast({ targetsInputDiv.classList.add('loading')
title : 'Scan en cours...', $.toast({
message : 'Merci de patienter', title : 'Scan en cours...',
class : 'info', message : 'Merci de patienter',
showIcon : 'satellite dish', class : 'info',
displayTime: 0, showIcon : 'satellite dish',
closeIcon : true, displayTime: 0,
position : 'bottom right', closeIcon : true,
}) position : 'bottom right',
})
}
} }
refreshButton.onclick = function(event) { refreshButton.onclick = function(event) {
refreshButton.getElementsByTagName('i')[0].className = 'loading spinner icon' refreshButton.getElementsByTagName('i')[0].className = 'loading spinner icon'

View File

@ -26,7 +26,7 @@ include_once 'filter_inputs.php';
<form id="lanScanForm" class="right menu"> <form id="lanScanForm" class="right menu">
<div class="ui category search item"> <div class="ui category search item">
<div id="targetsInputDiv" class="ui icon input"> <div id="targetsInputDiv" class="ui icon input">
<input class="prompt" type="text" id="targetsInput" name="lan" required <input class="prompt" type="text" id="targetsInput" name="lan"
pattern="[a-zA-Z0-9._\/ \-]+" value="<?= $targets; ?>" placeholder="Scanner un réseau..." pattern="[a-zA-Z0-9._\/ \-]+" value="<?= $targets; ?>" placeholder="Scanner un réseau..."
title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc. title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.
Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254" /> Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254" />
@ -64,16 +64,18 @@ foreach (scandir($SCANSDIR) as $filename) {
</div> </div>
<script> <script>
hiddenButton.onclick = (event) => { hiddenButton.onclick = (event) => {
targetsInputDiv.classList.add('loading') if (lanScanForm.form.checkValidity()) {
$.toast({ targetsInputDiv.classList.add('loading')
title: 'Scan en cours...', $.toast({
message: 'Merci de patienter', title: 'Scan en cours...',
class: 'info', message: 'Merci de patienter',
showIcon: 'satellite dish', class: 'info',
displayTime: 0, showIcon: 'satellite dish',
closeIcon: true, displayTime: 0,
position: 'bottom right', closeIcon: true,
}) position: 'bottom right',
})
}
} }
</script> </script>
</main> </main>

View File

@ -83,7 +83,7 @@
</xsl:call-template> </xsl:call-template>
<div class="ui category search item"> <div class="ui category search item">
<div id="targetsInputDiv" class="ui icon input"> <div id="targetsInputDiv" class="ui icon input">
<input class="prompt" type="text" id="targetsInput" name="targets" oninput="hiddenInput.value=this.value" required="" <input class="prompt" type="text" id="targetsInput" name="targets" oninput="hiddenInput.value=this.value"
pattern="[a-zA-Z0-9._\/ \-]+" value="{$targets}" placeholder="Scanner un réseau..." pattern="[a-zA-Z0-9._\/ \-]+" value="{$targets}" placeholder="Scanner un réseau..."
title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc. title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.
Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/> Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/>
@ -92,7 +92,7 @@ Exemples: 192.168.1.0/24 scanme.nmap.org 10.0-255.0-255.1-254"/>
<input type="hidden" name="compareWith" value="{$nextCompareWith}"/> <input type="hidden" name="compareWith" value="{$nextCompareWith}"/>
<input type="hidden" name="refreshPeriod" value="{$refreshPeriod}"/> <input type="hidden" name="refreshPeriod" value="{$refreshPeriod}"/>
<button id="hiddenButton" style="display: none;" type="submit" formmethod="get" formaction="{$basedir}/scan.php"></button> <button id="hiddenButton" style="display: none;" type="submit" formmethod="get" formaction="{$basedir}/scan.php"></button>
<button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/options.php" onclick="targetsInput.required=false"> <button class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/options.php">
<i class="sliders horizontal icon"></i> <i class="sliders horizontal icon"></i>
</button> </button>
<button id="refreshButton" class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/scan.php"> <button id="refreshButton" class="ui teal icon submit button" type="submit" formmethod="get" formaction="{$basedir}/scan.php">
@ -189,16 +189,18 @@ $.toast({
</xsl:if> </xsl:if>
hiddenButton.onclick = function(event) { hiddenButton.onclick = function(event) {
targetsInputDiv.classList.add('loading') if (lanScanForm.form.checkValidity()) {
$.toast({ targetsInputDiv.classList.add('loading')
title : 'Scan en cours...', $.toast({
message : 'Merci de patienter', title : 'Scan en cours...',
class : 'info', message : 'Merci de patienter',
showIcon : 'satellite dish', class : 'info',
displayTime: 0, showIcon : 'satellite dish',
closeIcon : true, displayTime: 0,
position : 'bottom right', closeIcon : true,
}) position : 'bottom right',
})
}
} }
refreshButton.onclick = function(event) { refreshButton.onclick = function(event) {
refreshButton.getElementsByTagName('i')[0].className = 'loading spinner icon' refreshButton.getElementsByTagName('i')[0].className = 'loading spinner icon'

View File

@ -46,10 +46,10 @@ include_once 'filter_inputs.php';
<h1 class="header">Scanner un <?=$host? "hôte" : "réseau" ?></h1> <h1 class="header">Scanner un <?=$host? "hôte" : "réseau" ?></h1>
<form id="newScanForm" class="ui form" method="get" action="scan.php"> <form id="newScanForm" class="ui form" method="get" action="scan.php">
<div class="required field"> <div class="field">
<label for="targetsInput" title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc. <label for="targetsInput" title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.
Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254">Cibles</label> Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254">Cibles</label>
<input id="targetsInput" type="text" name="targets" placeholder="Cibles" required <input id="targetsInput" type="text" name="targets" placeholder="Cibles"
pattern="[a-zA-Z0-9._\/ \-]+" value="<?= $targets; ?>" list="targetsList" pattern="[a-zA-Z0-9._\/ \-]+" value="<?= $targets; ?>" list="targetsList"
title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc. title="Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.
Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254" /> Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.0-255.0-255.1-254" />

View File

@ -2,13 +2,6 @@
include_once 'filter_inputs.php'; include_once 'filter_inputs.php';
if (!$targets) {
http_response_code(400);
$errorMessage = "Valeur incorecte pour le paramètre <var>targets</var> : " . filter_input(INPUT_GET, "targets", FILTER_SANITIZE_FULL_SPECIAL_CHARS);
include_once "options.php";
die();
}
if (!file_exists($SCANSDIR)) mkdir($SCANSDIR); if (!file_exists($SCANSDIR)) mkdir($SCANSDIR);
$args = ''; $args = '';