From e75387138147905ffd3b12cafffdc10f5388d948 Mon Sep 17 00:00:00 2001
From: phpipam <miha.petkovsek@telemach.si>
Date: Wed, 8 Nov 2023 08:30:26 +0100
Subject: [PATCH] php8 and other fixes

---
 app/folder/folder-map-search.php              |  8 +++++-
 app/folder/folder-map.php                     |  4 +--
 app/folder/index.php                          |  2 +-
 app/login/captcha                             |  2 +-
 .../address-details/address-details.php       |  2 +-
 app/subnets/addresses/print-address-table.php |  4 +--
 .../subnet-details/subnet-changelog.php       |  1 +
 .../subnet-details/subnet-map-search.php      | 27 +++----------------
 app/tools/nat/all_nats.php                    |  2 +-
 app/tools/powerDNS/domain-records.php         |  8 +++---
 app/tools/vlan/domains.php                    |  2 +-
 functions/GoogleAuthenticator                 |  2 +-
 functions/PHPMailer                           |  2 +-
 functions/classes/class.Common.php            |  2 +-
 functions/classes/class.Subnets.php           |  2 +-
 functions/classes/class.Tools.php             |  4 ++-
 functions/parsedown                           |  2 +-
 functions/php-saml                            |  2 +-
 functions/xmlseclibs                          |  2 +-
 19 files changed, 34 insertions(+), 46 deletions(-)

diff --git a/app/folder/folder-map-search.php b/app/folder/folder-map-search.php
index 6513bee9..3c107184 100755
--- a/app/folder/folder-map-search.php
+++ b/app/folder/folder-map-search.php
@@ -7,6 +7,9 @@ $biggest_subnet_mask = 32;
 # set type
 $type = "";
 
+// count subnets
+$cnt = [];
+
 foreach($subnets as $id=>$subnet) {
 	if($subnet->isFolder!=1) {
 		// identify address
@@ -21,6 +24,9 @@ foreach($subnets as $id=>$subnet) {
 			if($subnet->mask<$biggest_subnet_mask)  { $biggest_subnet_mask = $subnet->mask; }
 		}
 
+		// first ?
+		if(!isset($cnt[$subnet->mask])) { $cnt[$subnet->mask]=0; }
+
 		// size
 		$cnt[$subnet->mask]++;
 	}
@@ -36,7 +42,7 @@ $masks = [];
 print "<h4>"._("Select mask").":</h4><hr>";
 for($m=$biggest_subnet_mask+1; $m<=$pow; $m++) {
 	// active
-	$active = $m==$_GET['ipaddrid'] ? "btn-success" : "";
+	$active = $m==@$_GET['ipaddrid'] ? "btn-success" : "";
 
 	// number of subnets
 	$subnet_num = 0;
diff --git a/app/folder/folder-map.php b/app/folder/folder-map.php
index 3a06b725..9ec794a1 100755
--- a/app/folder/folder-map.php
+++ b/app/folder/folder-map.php
@@ -60,7 +60,7 @@ if($slaves) {
 				# create free objects
 				for($searchmask=$subnet['mask']+1; $searchmask<$smallest_subnet_mask+1; $searchmask++) {
 					// search ?
-					if((@$from_search==true && $searchmask==$from_search_mask) ||  $from_search==false) {
+					if((@$from_search==true && $searchmask==$from_search_mask) ||  @$from_search==false) {
 						// search
 						$found = $Subnets->search_available_subnets ($subnet['id'], $searchmask, $count = Subnets::SEARCH_FIND_ALL, $direction = Subnets::SEARCH_FIND_FIRST);
 
@@ -138,7 +138,7 @@ if($slaves) {
 					print "<div class='ip_vis_subnet'>";
 					for($m=1; $m<=$max_subnets;$m++) {
 						if(in_array($Subnets->transform_address($subnet_start, "dotted")."/".$free_mask, $items)) {
-							print "<span class='subnet_map subnet_map_$pow subnet_map_found'><a href='' data-sectionid='{$section->id}' data-mastersubnetid='{$subnet[id]}' class='createfromfree' data-cidr='".$Subnets->transform_address($subnet_start, "dotted")."/".$free_mask."' rel='tooltip' title='"._("Create subnet")."'>".$Subnets->transform_address($subnet_start, "dotted")."/".$free_mask."</a></span>";
+							print "<span class='subnet_map subnet_map_$pow subnet_map_found'><a href='' data-sectionid='{$section->id}' data-mastersubnetid='".$subnet['id']."' class='createfromfree' data-cidr='".$Subnets->transform_address($subnet_start, "dotted")."/".$free_mask."' rel='tooltip' title='"._("Create subnet")."'>".$Subnets->transform_address($subnet_start, "dotted")."/".$free_mask."</a></span>";
 						}
 						else {
 							print "<span class='subnet_map subnet_map_$pow subnet_map_notfound'>".$Subnets->transform_address($subnet_start, "dotted")."/".$free_mask."</span>";
diff --git a/app/folder/index.php b/app/folder/index.php
index 3ec65c8a..07a190c1 100644
--- a/app/folder/index.php
+++ b/app/folder/index.php
@@ -27,7 +27,7 @@ if($folder_permission == 0)			{ $Result->show("danger", _('You do not have permi
 
 # get all slaves and addresses
 $slaves = $Subnets->fetch_subnet_slaves ($folderId);
-$addresses = $Addresses->fetch_subnet_addresses ($folder['id'], $sort['field'], $sort['direction']);
+$addresses = $Addresses->fetch_subnet_addresses ($folder['id'], @$sort['field'], @$sort['direction']);
 
 # print Folder details
 print "<div class='subnetDetails'>";
diff --git a/app/login/captcha b/app/login/captcha
index 1ecb8847..2be13fdd 160000
--- a/app/login/captcha
+++ b/app/login/captcha
@@ -1 +1 @@
-Subproject commit 1ecb884797c66e01a875c058def46c85aecea45b
+Subproject commit 2be13fddff68a72dee2c68196dbce7c8f825bcc1
diff --git a/app/subnets/addresses/address-details/address-details.php b/app/subnets/addresses/address-details/address-details.php
index f434b137..03c25e15 100644
--- a/app/subnets/addresses/address-details/address-details.php
+++ b/app/subnets/addresses/address-details/address-details.php
@@ -345,7 +345,7 @@ if(sizeof($address)>1) {
     			print "		<a class='ping_ipaddress   btn btn-default btn-xs' data-subnetId='".$address['subnetId']."' data-id='".$address['id']."' href='#' 						   													rel='tooltip' data-container='body' title='"._('Check availability')."'>							<i class='fa fa-gray fa-cogs'></i></a>";
     			print "		<a class='search_ipaddress btn btn-default btn-xs         "; if(is_blank($resolve['name'])) { print "disabled"; } print "' href='".create_link("tools","search",$resolve['name'])."' "; if(!is_blank($resolve['name']))   { print "rel='tooltip' data-container='body' title='"._('Search same hostnames in db')."'"; } print ">	<i class='fa fa-gray fa-search'></i></a>";
     			print "		<a class='mail_ipaddress   btn btn-default btn-xs          ' href='#' data-id='".$address['id']."' rel='tooltip' data-container='body' title='"._('Send mail notification')."'>																																<i class='fa fa-gray fa-envelope-o'></i></a>";
-    			if($zone) {
+    			if(isset($zone)) {
     			print "		<a class='fw_autogen	   btn btn-default btn-xs          ' href='#' data-subnetid='".$subnet['id']."' data-action='adr' data-ipid='".$address['id']."' data-dnsname='".((preg_match('/\//i',$address['hostname'])) ? '':$address['hostname'])."' rel='tooltip' data-container='body' title='"._('Regenerate firewall address object.')."'><i class='fa fa-gray fa-fire'></i></a>";
     			}
     			print "		<a class='delete_ipaddress btn btn-default btn-xs modIPaddr' data-action='delete' data-subnetId='".$address['subnetId']."' data-id='".$address['id']."' href='#' id2='$address[ip]' rel='tooltip' data-container='body' title='"._('Delete IP address')."'>													<i class='fa fa-gray fa-times'></i></a>";
diff --git a/app/subnets/addresses/print-address-table.php b/app/subnets/addresses/print-address-table.php
index 4e4f09e7..b56ddc76 100644
--- a/app/subnets/addresses/print-address-table.php
+++ b/app/subnets/addresses/print-address-table.php
@@ -165,7 +165,7 @@ else 				{ print _("IP addresses belonging to ALL nested subnets"); }
 	if(in_array('port', $selected_ip_fields)) 	{ print "<th class='hidden-xs hidden-sm hidden-md'>"._('Port')."</th>"; }
 	if(in_array('location', $selected_ip_fields) && $User->get_module_permissions ("locations")>=User::ACCESS_R) 	{ print "<th class='hidden-xs hidden-sm hidden-md'>"._('Location')."</th>"; }
 	if(in_array('owner', $selected_ip_fields)) 	{ print "<th class='hidden-xs hidden-sm'>"._('Owner')."</th>"; }
-	if($User->settings->enableCustomers=="1" && $cnt_obj["customer_id"]>0 && $User->get_module_permissions ("customers")>=User::ACCESS_R)	{ print "<th class='hidden-xs hidden-sm'>"._('Customer')."</th>"; }
+	if($User->settings->enableCustomers=="1" && @$cnt_obj["customer_id"]>0 && $User->get_module_permissions ("customers")>=User::ACCESS_R)	{ print "<th class='hidden-xs hidden-sm'>"._('Customer')."</th>"; }
 	// custom fields
 	if(sizeof($custom_fields) > 0) {
 		foreach($custom_fields as $myField) 	{
@@ -480,7 +480,7 @@ else {
 				}
 
 				# customer_id
-				if($User->settings->enableCustomers=="1" && $cnt_obj["customer_id"] && $User->get_module_permissions ("customers")>=User::ACCESS_R) {
+				if($User->settings->enableCustomers=="1" && @$cnt_obj["customer_id"] && $User->get_module_permissions ("customers")>=User::ACCESS_R) {
 					$customer = $Tools->fetch_object ("customers", "id", $addresses[$n]->customer_id);
 					print $customer===false ? "<td></td>" : "<td>$customer->title <a target='_blank' href='".create_link("tools","customers",$customer->title)."'><i class='fa fa-external-link'></i></a></td>";
 				}
diff --git a/app/subnets/subnet-details/subnet-changelog.php b/app/subnets/subnet-details/subnet-changelog.php
index e36abd47..073030db 100755
--- a/app/subnets/subnet-details/subnet-changelog.php
+++ b/app/subnets/subnet-details/subnet-changelog.php
@@ -153,6 +153,7 @@ if($clogsAddresses) {
 	foreach($clogsAddresses as $l) {
 		$l = (array) $l;
 		# format diff
+		if(!is_null($l['cdiff']))
 		$l['cdiff'] = str_replace("\n", "<br>", $l['cdiff']);
 
 		print "<tr>";
diff --git a/app/subnets/subnet-details/subnet-map-search.php b/app/subnets/subnet-details/subnet-map-search.php
index ddd67e30..2c1ade92 100644
--- a/app/subnets/subnet-details/subnet-map-search.php
+++ b/app/subnets/subnet-details/subnet-map-search.php
@@ -1,29 +1,14 @@
 <?php
 
-
-# max mask possible
-$biggest_subnet_mask = 32;
-
-# set type
-$type = "";
-
-// ipv6
-if($Tools->identify_address($subnet['subnet'])=="IPv6") {
-	$biggest_subnet_mask = $subnet['mask']+10>128 ? 128 : $subnet['mask'];
-	$pow = 128;
-}
-else {
-	$biggest_subnet_mask = $subnet['mask']+10>32 ? 32 : $subnet['mask'];
-	$pow = 32;
-}
-
+// max mask possible
+$pow = $Tools->identify_address($subnet['subnet'])=="IPv6" ? 128 : 32;
 
 //
 // Select mask
 //
 $masks = [];
 print "<h4>"._("Select mask").":</h4><hr>";
-for($m=$biggest_subnet_mask+1; $m<=$pow; $m++) {
+for($m=$subnet['mask']+1; $m<=$pow; $m++) {
 	// active
 	$active = $m==@$_GET['ipaddrid'] ? "btn-success" : "";
 
@@ -36,12 +21,6 @@ for($m=$biggest_subnet_mask+1; $m<=$pow; $m++) {
 	$masks[] = $m;
 }
 
-
-// validate
-
-
-
-
 //
 // include
 //
diff --git a/app/tools/nat/all_nats.php b/app/tools/nat/all_nats.php
index 1bd601ad..39906ff2 100644
--- a/app/tools/nat/all_nats.php
+++ b/app/tools/nat/all_nats.php
@@ -127,7 +127,7 @@ else {
                 $policy_dst = $n->policy=="Yes" ? $n->policy_dst : "/";
 
                 // description
-                $n->description = str_replace("\n", "<br>", $n->description);
+                $n->description = is_null($n->description) ? "" : str_replace("\n", "<br>", $n->description);
 
                 // port
                 if(is_blank($n->src_port)) $n->src_port = "/";
diff --git a/app/tools/powerDNS/domain-records.php b/app/tools/powerDNS/domain-records.php
index 0c7ef09b..eb7b1da7 100644
--- a/app/tools/powerDNS/domain-records.php
+++ b/app/tools/powerDNS/domain-records.php
@@ -30,12 +30,12 @@ if ($domain === false) {
             // SOA, NS
             if ($r->type == "SOA") {
                 $r->order = 1;
-                $records_default[] = $r;
+                $records_default[] = (array) $r;
                 unset($records[$k]);
             }
             if ($r->type == "NS") {
                 $r->order = 2;
-                $records_default[] = $r;
+                $records_default[] = (array) $r;
                 unset($records[$k]);
             }
             // split to $origins ?
@@ -46,7 +46,7 @@ if ($domain === false) {
         $order = array();
         if(isset($records_default)) {
             foreach ($records_default as $key => $row) {
-                $order[$key] = $row->order;
+                $order[$key] = $row['order'];
             }
             array_multisort($records_default, SORT_ASC, SORT_NUMERIC, $order);
         }
@@ -178,7 +178,7 @@ if (isset($records_default)) {
 
     // defaults
     foreach ($records_default as $r) {
-        print_record($r);
+        print_record((object) $r);
     }
 }
 
diff --git a/app/tools/vlan/domains.php b/app/tools/vlan/domains.php
index cd78e531..fef1c38b 100644
--- a/app/tools/vlan/domains.php
+++ b/app/tools/vlan/domains.php
@@ -56,7 +56,7 @@ foreach($vlan_domains as $domain) {
 	}
 	else {
 		//explode
-		unset($sec);
+		$sec = [];
 		$sections_tmp = pf_explode(";", $domain->permissions);
 		foreach($sections_tmp as $t) {
 			//fetch section
diff --git a/functions/GoogleAuthenticator b/functions/GoogleAuthenticator
index 3baa997f..505c2af8 160000
--- a/functions/GoogleAuthenticator
+++ b/functions/GoogleAuthenticator
@@ -1 +1 @@
-Subproject commit 3baa997f399d4afd5d6a81d42244ec9cc3eeb080
+Subproject commit 505c2af8337b559b33557f37cda38e5f843f3768
diff --git a/functions/PHPMailer b/functions/PHPMailer
index df16b615..ee4090bd 160000
--- a/functions/PHPMailer
+++ b/functions/PHPMailer
@@ -1 +1 @@
-Subproject commit df16b615e371d81fb79e506277faea67a1be18f1
+Subproject commit ee4090bd62ad3ded3eac19d6fd0213abbe3596f1
diff --git a/functions/classes/class.Common.php b/functions/classes/class.Common.php
index 2c22f7c1..9835e99e 100644
--- a/functions/classes/class.Common.php
+++ b/functions/classes/class.Common.php
@@ -1098,7 +1098,7 @@ class Common_functions  {
 	 */
 	public function create_links ($text, $field_type = "varchar") {
 		if (!is_string($text))
-			return '';
+			return $text;
 
 		// create links only for varchar fields
 		if (strpos($field_type, "varchar")!==false) {
diff --git a/functions/classes/class.Subnets.php b/functions/classes/class.Subnets.php
index e3fbc146..6d5f3d5b 100644
--- a/functions/classes/class.Subnets.php
+++ b/functions/classes/class.Subnets.php
@@ -761,7 +761,7 @@ class Subnets extends Common_functions {
 		try {
 			$query = "SELECT s.* FROM subnets AS s
 				INNER JOIN (SELECT subnet,mask,COUNT(*) AS cnt FROM subnets GROUP BY subnet,mask HAVING cnt >1) dups ON s.subnet=dups.subnet AND s.mask=dups.mask
-				ORDER BY s.subnet,s.mask,s.id;";
+				and.s.isFolder=0 ORDER BY s.subnet,s.mask,s.id;";
 
 			$subnets = $this->Database->getObjectsQuery($query);
 
diff --git a/functions/classes/class.Tools.php b/functions/classes/class.Tools.php
index f42310e1..4435d3d5 100644
--- a/functions/classes/class.Tools.php
+++ b/functions/classes/class.Tools.php
@@ -1956,7 +1956,9 @@ class Tools extends Common_functions {
                                     // append status
                                     if ($snet->pingSubnet=="1") {
                                         //calculate
-                                        $tDiff = time() - strtotime($item->lastSeen);
+                                    	if(!is_null($item->lastSeen)) {
+	                                        $tDiff = time() - strtotime($item->lastSeen);
+    									}
                                         if($item->excludePing=="1" )    { $hStatus = "padded"; $hTooltip = ""; }
                                         elseif(is_null($item->lastSeen)) { $hStatus = "neutral"; $hTooltip = "rel='tooltip' data-container='body' data-html='true' data-placement='left' title='"._("Address was never online")."'"; }
                                         elseif($item->lastSeen == "0000-00-00 00:00:00") { $hStatus = "neutral"; 	$hTooltip = "rel='tooltip' data-container='body' data-html='true' data-placement='left' title='"._("Address is offline")."<hr>"._("Last seen").": "._("Never")."'";}
diff --git a/functions/parsedown b/functions/parsedown
index cb17b647..77947eda 160000
--- a/functions/parsedown
+++ b/functions/parsedown
@@ -1 +1 @@
-Subproject commit cb17b6477dfff935958ba01325f2e8a2bfa6dab3
+Subproject commit 77947eda2fdaf06b181c63a7db13e38968306aee
diff --git a/functions/php-saml b/functions/php-saml
index a7328b11..5fbf3486 160000
--- a/functions/php-saml
+++ b/functions/php-saml
@@ -1 +1 @@
-Subproject commit a7328b11887660ad248ea10952dd67a5aa73ba3b
+Subproject commit 5fbf3486704ac9835b68184023ab54862c95f213
diff --git a/functions/xmlseclibs b/functions/xmlseclibs
index f8f19e58..cf50b502 160000
--- a/functions/xmlseclibs
+++ b/functions/xmlseclibs
@@ -1 +1 @@
-Subproject commit f8f19e58f26cdb42c54b214ff8a820760292f8df
+Subproject commit cf50b5023964550d714df76ba9adf21eb6fdaa35
-- 
GitLab