49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
<?php
|
|
|
|
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
|
|
// Exit if accessed directly
|
|
if (! defined('DUPLICATOR_VERSION')) {
|
|
exit;
|
|
}
|
|
|
|
class DUP_Shell_U
|
|
{
|
|
/**
|
|
* Escape a string to be used as a shell argument with bypass support for Windows
|
|
*
|
|
* NOTES:
|
|
* Provides a way to support shell args on Windows OS and allows %,! on Windows command line
|
|
* Safe if input is know such as a defined constant and not from user input escape shellarg
|
|
* on Windows with turn %,! into spaces
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function escapeshellargWindowsSupport($string)
|
|
{
|
|
if (strncasecmp(PHP_OS, 'WIN', 3) == 0) {
|
|
if (strstr($string, '%') || strstr($string, '!')) {
|
|
$result = '"' . str_replace('"', '', $string) . '"';
|
|
return $result;
|
|
}
|
|
}
|
|
return escapeshellarg($string);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public static function isPopenEnabled()
|
|
{
|
|
|
|
if (!DUP_Util::isIniFunctionEnalbe('popen') || !DUP_Util::isIniFunctionEnalbe('proc_open')) {
|
|
$ret = false;
|
|
} else {
|
|
$ret = true;
|
|
}
|
|
|
|
$ret = apply_filters('duplicator_is_popen_enabled', $ret);
|
|
return $ret;
|
|
}
|
|
}
|