فهرست منبع

Update filedelete.php

FusionPBX 6 سال پیش
والد
کامیت
c4f644b34b
1فایلهای تغییر یافته به همراه74 افزوده شده و 53 حذف شده
  1. 74 53
      filedelete.php

+ 74 - 53
filedelete.php

@@ -17,73 +17,94 @@
 
 	The Initial Developer of the Original Code is
 	Mark J Crane <[email protected]>
-	Portions created by the Initial Developer are Copyright (C) 2008-2012
+	Portions created by the Initial Developer are Copyright (C) 2008-2019
 	the Initial Developer. All Rights Reserved.
 
 	Contributor(s):
 	Mark J Crane <[email protected]>
 	James Rose <[email protected]>
 */
-include "root.php";
-require_once "resources/require.php";
-require_once "resources/check_auth.php";
-if (permission_exists('script_editor_save')) {
-	//access granted
-}
-else {
-	echo "access denied";
-	exit;
-}
+
+//includes
+	include "root.php";
+	require_once "resources/require.php";
+	require_once "resources/check_auth.php";
+
+//check permissions
+	if (permission_exists('script_editor_save')) {
+		//access granted
+	}
+	else {
+		echo "access denied";
+		exit;
+	}
 
 //add multi-lingual support
 	$language = new text;
 	$text = $language->get();
 
-$folder = $_GET["folder"];
-$folder = str_replace ("\\", "/", $folder);
-if (substr($folder, -1) != "/") { $folder = $folder.'/'; }
-$file = $_GET["file"];
+//set the variabls
+	$folder = $_REQUEST["folder"];
+	$folder = str_replace ("\\", "/", $folder);
+	$folder = realpath($folder);
+	$file = $_REQUEST["file"];
 
-if (strlen($folder) > 0 && strlen($file) > 0) {
-	unlink($folder.$file);
-	header("Location: fileoptions.php");
-}
-else {
-	//display form
-	require_once "header.php";
-	echo "<br>";
-	echo "<div align='left'>";
-	echo "<form method='get' action=''>";
-	echo "<table>";
-	echo "	<tr>";
-	echo "		<td>".$text['label-path']."</td>";
-	echo "	</tr>";
-	echo "	<tr>";
-	echo "		<td>".$folder.$file."</td>";
-	echo "	</tr>";
-	echo "</table>";
+//delete the file or show the html form
+	if (strlen($folder) > 0 && strlen($file) > 0 && isset($_POST['token'])) {
+		//compare the tokens
+		$key_name = '/app/edit/file_delete';
+		$hash = hash_hmac('sha256', $key_name, $_SESSION['keys'][$key_name]);
+		if (!hash_equals($hash, $_POST['token'])) {
+			echo "access denied";
+			exit;
+		}
 
-	echo "<br />";
+		//delete the file
+		unlink($folder.'/'.$file);
 
-	echo "<table>";
-	echo "	<tr>";
-	echo "	  <td>".$text['label-file-name']."</td>";
-	echo "	</tr>";
+		//redirect the browser
+		header("Location: fileoptions.php");
+	}
+	else {
+		//create the token
+		$key_name = '/app/edit/file_delete';
+		$_SESSION['keys'][$key_name] = bin2hex(random_bytes(32));
+		$_SESSION['token'] = hash_hmac('sha256', $key_name, $_SESSION['keys'][$key_name]);
 
-	echo "	<tr>";
-	echo "		<td><input type='text' name='file' value=''></td>";
-	echo "	</tr>";
+		//display form
+		require_once "header.php";
+		echo "<br>";
+		echo "<div align='left'>";
+		echo "	<form method='POST' action=''>";
+		echo "		<table>";
+		echo "			<tr>";
+		echo "				<td>".$text['label-path']."</td>";
+		echo "			</tr>";
+		echo "			<tr>";
+		echo "				<td>".$folder."</td>";
+		echo "			</tr>";
+		echo "		</table>";
+		echo "		<br />";
+		echo "		<table>";
+		echo "			<tr>";
+		echo "				<td>".$text['label-file-name']."</td>";
+		echo "			</tr>";
+		echo "			<tr>";
+		echo "				<td><input type='text' name='file' value='".$file."'></td>";
+		echo "			</tr>";
+		echo "			<tr>";
+		echo "				<td colspan='1' align='right'>";
+		echo "					<input type='hidden' name='folder' value='$folder'>";
+		echo "					<input type='hidden' name='token' id='token' value='". $_SESSION['token']. "'>";
+		echo "					<input type='submit' value='".$text['button-del-file']."'>";
+		echo "				</td>";
+		echo "			</tr>";
+		echo "		</table>";
+		echo "	</form>";
+		echo "</div>";
 
-	echo "	<tr>";
-	echo "		<td colspan='1' align='right'>";
-	echo "      <input type='hidden' name='folder' value='$folder'>";
-	echo "		  <input type='submit' value='".$text['button-new-file']."'>";
-	echo "    </td>";
-	echo "	</tr>";
-	echo "</table>";
-	echo "</form>";
-	echo "</div>";
+		//include the footer
+		require_once "footer.php";
+	}
 
-	require_once "footer.php";
-}
-?>
+?>