Procházet zdrojové kódy

Update filesave.php

FusionPBX před 6 roky
rodič
revize
64cf3a565e
1 změnil soubory, kde provedl 40 přidání a 27 odebrání
  1. 40 27
      filesave.php

+ 40 - 27
filesave.php

@@ -17,56 +17,69 @@
 
 	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();
 
-	$filepath = $_POST["filepath"];
-	if ($filepath != '') {
+//compare the tokens
+	$key_name = '/app/edit/'.$_POST['mode'];
+	$hash = hash_hmac('sha256', $key_name, $_SESSION['keys'][$key_name]);
+	if (!hash_equals($hash, $_POST['token'])) {
+		echo "access denied";
+		exit;
+	}
+
+//run the code if file path exists
+	$file_path = $_POST["filepath"];
+	if ($file_path != '') {
 
 		try {
 			//save file content
-				$filepath = realpath($filepath); //filepath
-				$filepath = str_replace ('//', '/', $filepath);
-				$filepath = str_replace ("\\", "/", $filepath);
-				$content = $_POST["content"];
-
-				$handle = fopen($filepath, 'wb');
-				if (!$handle) {
-					throw new Exception('Write Failed - Check File Owner & Permissions');
+				$file_path = realpath($file_path);
+				$file_path = str_replace ('//', '/', $file_path);
+				$file_path = str_replace ("\\", "/", $file_path);
+				if (file_exists($file_path)) {
+					$handle = fopen($file_path, 'wb');
+					if (!$handle) {
+						throw new Exception('Write Failed - Check File Owner & Permissions');
+					}
+					fwrite($handle, $_POST["content"]);
+					fclose($handle);
 				}
-				fwrite($handle, $content);
-				fclose($handle);
 
 			//set the reload_xml value to true
 				$_SESSION["reload_xml"] = true;
 
 			//alert user of success
-				echo "<script>alert('Changes Saved'); parent.focus_editor();</script>";
+				echo "Changes Saved";
 		}
 		catch(Exception $e) {
-		  //alert error
-		  echo "<script>alert('".$e->getMessage()."'); parent.focus_editor();</script>";
+			//alert error
+			echo $e->getMessage();
 		}
 
 	}
 
-?>
+?>