Вход Регистрация
Файл: tools/clone.php
Строк: 135
<?php
/**
 * [PHPFOX_HEADER]
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author            Raymond Benc
 * @package         PhpFox
 * @version         $Id: phpfox.php 1298 2009-12-05 16:19:23Z Raymond_Benc $
 * 
 * Requires: mysqladmin, mysqldump
 * Must be executed via command line as a root user. MySQL user must have the rights to create a database.
 * 
 */

if (PHP_SAPI != 'cli')
{
    exit(
"Run via command line as root user.n");
}

error_reporting(E_ALL);

@
set_time_limit(0);

define('COLOR_RED'"33[01;31m");
define('COLOR_GREEN'"33[01;32m");
define('COLOR_NORMAL'"33[00m");
define('PHPFOX'true);

$_SERVER['REMOTE_ADDR'] = '';
$_SERVER['HTTP_HOST'] = '';

if (
trim(cmd('whoami')) != 'root')
{
    exit(
"You have to be root.n");
}

$sOriginalPath get('What is the full path to your phpFox site?');
$sOriginalPath trim($sOriginalPath);
$sOriginalPath rtrim($sOriginalPath'/');
$sOriginalPath $sOriginalPath '/';

if (!
file_exists($sOriginalPath 'include/setting/server.sett.php'))
{
    exit(
"phpFox cannot be found here.n");
}

$sFinalPath get('Where would you like it cloned?');
$sFinalPath trim($sFinalPath);
$sFinalPath rtrim($sFinalPath'/');
$sFinalPath $sFinalPath '/';

chdir($sOriginalPath);

p('Cloning source files...');

cmd('cp -r -p . ' $sFinalPath);

p('Done!');

$sDatabase get('Provide a name for your cloned MySQL database?');
$sDatabase trim($sDatabase);

$sUsername get('MySQL Username: ');
$sUsername trim($sUsername);

$sPassword getSilent('MySQL Password: ');
$sPassword trim($sPassword);

chdir($sFinalPath);

require_once(
$sFinalPath 'include/setting/server.sett.php');

p('Creating database...');

cmd("mysqladmin create {$sDatabase} -u {$sUsername} --password="{$sPassword}" && mysqldump -u {$sUsername} --password="{$sPassword}{$_CONF['db']['name']} | mysql -u {$sUsername} --password="{$sPassword}" -h localhost {$sDatabase}");

p('Done!');

$sFullPath get('What is the full URL to your cloned site?');
$sFullPath trim($sFullPath);
$aParsedUrl parse_url($sFullPath);

p('Updating server setting file...');

// Get the settings content
$sContent file_get_contents($sFinalPath 'include/setting/server.sett.php');            

$sRewrite '2';
if (
file_exists('./.htaccess'))
{
    
$sHtaccess file_get_contents('./.htaccess');
    if (
preg_match('/index.php/i'$sHtaccess))
    {
        
$sHtaccess preg_replace('/RewriteBase (.*)/i''RewriteBase ' $aParsedUrl['path'], $sHtaccess);
    }
    
    if ((
$hHtaccess = @fopen($sFinalPath '.htaccess''w')))
    {
        
$sRewrite '1';
        
fwrite($hHtaccess$sHtaccess);
        
fclose($hHtaccess);
    }    
}
        
$aFind = array(
    
"/\$_CONF['db']['name'] = (.*?);/i",
    
"/\$_CONF['core.host'] = (.*?);/i",
    
"/\$_CONF['core.folder'] = (.*?);/i",
    
"/\$_CONF['core.url_rewrite'] = (.*?);/i",
);
        
$aReplace = array(
    
"\$_CONF['db']['name'] = '{$sDatabase}';",
    
"\$_CONF['core.host'] = '{$aParsedUrl['host']}';",
    
"\$_CONF['core.folder'] = '{$aParsedUrl['path']}';",
    
"\$_CONF['core.url_rewrite'] = '{$sRewrite}';"
);
        
$sContent preg_replace($aFind$aReplace$sContent);

if (
$hServerConf = @fopen($sFinalPath 'include/setting/server.sett.php''w'))
{
    
fwrite($hServerConf$sContent);
    
fclose($hServerConf);
}

p('Done!');

p('Removing cache folder...');
cmd('rm -rf ' $sFinalPath 'file/cache/');
cmd('mkdir ' $sFinalPath 'file/cache/');
cmd('chmod 0777 ' $sFinalPath 'file/cache/');
p('Done!');

function 
cmd($sCmd)
{
    return 
shell_exec($sCmd);
}

function 
p($mStr)
{
    if (!
is_array($mStr))
    {
        
$mStr = array($mStr);
    }
        
    foreach (
$mStr as $sStr)
    {
        
$bAddLineBreak = (((substr($sStr, -3) != '...') ? true false));
            
        if (
$sStr == 'Done!')
        {
            echo (
PHP_SAPI == 'cli' COLOR_GREEN '<span style="color:green;">');
        }
        echo (!
$bAddLineBreak " -> " ' '). $sStr . ($bAddLineBreak "n" '');
        if (
$sStr == 'Done!')
        {
            echo (
PHP_SAPI == 'cli' COLOR_NORMAL '</span>');
        }
    }
}

function 
get($sStr)
{
    
fwrite(STDOUTCOLOR_GREEN $sStr COLOR_NORMAL ' ');
        
    return 
trim(fgets(STDIN));
}

function 
getSilent($sStr
{
    
$sCmd "/usr/bin/env bash -c 'echo OK'";
    if (
rtrim(shell_exec($sCmd)) !== 'OK'
    {
        exit(
"Can't invoke bash.n");          
    }
    
$sCmd "/usr/bin/env bash -c 'read -s -p ""
      . COLOR_GREEN . addslashes(
$sStr) . COLOR_NORMAL
      . "" mypassword && echo 
$mypassword'";
    
$sPassword rtrim(shell_exec($sCmd));
    echo 
"n";
    return 
$sPassword;  
}

?>
Онлайн: 4
Реклама