From a773e8b8d9363a794a6d5063d3133a1d301860c8 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Fri, 18 Oct 2024 12:11:45 +0200
Subject: [PATCH] datadir

---
 config.php  |  5 +++--
 options.php | 19 +++++++------------
 scan.php    |  5 +++--
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/config.php b/config.php
index 873d9a0..6504156 100644
--- a/config.php
+++ b/config.php
@@ -2,7 +2,8 @@
 
 $BASEDIR = "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']}" . dirname($_SERVER['REQUEST_URI']);
 $SCANSDIR = 'scans';
-$DATADIR  = '/usr/share/nmap';
+$NMAPDIR  = dirname(`which nmap`) . "/../share/nmap";
+$DATADIR = ".";
 
 $presets = [
     "lan" => [
@@ -18,7 +19,7 @@ $presets = [
         '-F'            => true,
         '-sV'           => true,
         '-T5'           => true,
-        '--script'      => "scripts",
+        '--datadir'     => "$DATADIR",
         '--stylesheet'  => "$BASEDIR/xslt/servicesTable.xsl",
         'refreshPeriod' => 60,
         'sudo'          => true,
diff --git a/options.php b/options.php
index f0909ef..9b62915 100755
--- a/options.php
+++ b/options.php
@@ -473,7 +473,7 @@ foreach (scandir($SCANSDIR) as $filename) {
 
   <datalist id='servicesList'>
 <?php
-$nmap_services = file("$DATADIR/nmap-services");
+$nmap_services = file("$NMAPDIR/nmap-services");
 $services = [];
 foreach ($nmap_services as $service) {
   if (0 !== strpos($service, '#')) {
@@ -513,18 +513,13 @@ foreach ($services as $name => [$portid, $protocol]) {
     <option value="version"></option>
     <option value="vuln"></option>
     <!-- names -->
-    <option value="scripts/"></option>
 <?php
-foreach (scandir("scripts") as $filename) {
-  if (substr($filename, -4) === '.nse') {
-    $name = substr($filename, 0, -4);
-    echo "    <option value='scripts/$name'></option>\n";
-  }
-}
-foreach (scandir("$DATADIR/scripts") as $filename) {
-  if (substr($filename, -4) === '.nse') {
-    $name = substr($filename, 0, -4);
-    echo "    <option value='$name'></option>\n";
+foreach ([$NMAPDIR, $DATADIR] as $dir) {
+  foreach (scandir("$dir/scripts") as $filename) {
+    if (substr($filename, -4) === '.nse') {
+      $name = substr($filename, 0, -4);
+      echo "    <option value='$name'></option>\n";
+    }
   }
 }
 ?>
diff --git a/scan.php b/scan.php
index f7c0d36..e4e1883 100755
--- a/scan.php
+++ b/scan.php
@@ -1,5 +1,6 @@
 <?php
 
+include_once 'config.php';
 include_once 'filter_inputs.php';
 
 if (!file_exists($SCANSDIR)) mkdir($SCANSDIR);
@@ -16,8 +17,8 @@ foreach ($options as $arg => $value) {
             if ($value === true) {
                 $command .= " $arg";
             } else {
-                if (substr($arg, 0, 2) == '--') $command .= " $arg $value";
-                else $command .= " $arg$value";
+                if (substr($arg, 0, 2) == '--') $command .= " $arg " . escapeshellarg($value);
+                else $command .= " $arg" . escapeshellarg($value);
             }
         }
     }