Просмотр исходного кода

Fix file serving for symlinked extensions (#7545)

* Fix file serving for symlinked extensions from ext.php

* Don't resolve symlink when deleting extension

* Minor syntax

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Inverle 11 месяцев назад
Родитель
Сommit
4568111c00
2 измененных файлов с 13 добавлено и 0 удалено
  1. 8 0
      lib/lib_rss.php
  2. 5 0
      p/ext.php

+ 8 - 0
lib/lib_rss.php

@@ -922,6 +922,14 @@ function recursive_unlink(string $dir): bool {
 		return true;
 	}
 
+	if (is_link($dir)) {
+		if (PHP_OS_FAMILY === "Windows") {
+			return rmdir($dir);
+		}
+
+		return unlink($dir);
+	}
+
 	$files = array_diff(scandir($dir) ?: [], ['.', '..']);
 	foreach ($files as $filename) {
 		$filename = $dir . '/' . $filename;

+ 5 - 0
p/ext.php

@@ -11,6 +11,11 @@ function get_absolute_filename(string $file_name): string {
 
 	$third_party_extension = realpath(THIRDPARTY_EXTENSIONS_PATH . '/' . $file_name);
 	if (false !== $third_party_extension) {
+		$original_dir = THIRDPARTY_EXTENSIONS_PATH . '/' . explode('/', $file_name)[0];
+		if (is_link($original_dir)) {
+			return THIRDPARTY_EXTENSIONS_PATH . '/' . $file_name;
+		}
+
 		return $third_party_extension;
 	}