관리-도구
편집 파일: _clone.php
<?php ////////////////////////////////////////////////////////////// //=========================================================== // clone.php //=========================================================== // SOFTACULOUS // Version : 4.2.8 // Inspired by the DESIRE to be the BEST OF ALL // ---------------------------------------------------------- // Started by: Alons // Date: 10th Jan 2009 // Time: 21:00 hrs // Site: http://www.softaculous.com/ (SOFTACULOUS) // ---------------------------------------------------------- // Please Read the Terms of use at http://www.softaculous.com // ---------------------------------------------------------- //=========================================================== // (c)Softaculous Inc. //=========================================================== ////////////////////////////////////////////////////////////// if(!defined('SOFTACULOUS')){ die('Hacking Attempt'); } //The Install process function __clone(){ global $__settings, $error, $software, $globals, $replace_data, $source_data; //Do we meet the Minimum software requirements __requirements(); if(!empty($error)){ return false; } $temp = parse_url($source_data['softurl']); $source_data['relativeurl'] = $temp['path']; $source_data['domhost'] = $temp['host']; $temp = parse_url($__settings['softurl']); $__settings['relativeurl'] = $temp['path']; $__settings['domhost'] = $temp['host']; if($__settings['ver'] < '6.0.0.0'){ //Safeguard clear_cache.sh file $randstr = srandstr(4); smkdir($__settings['softpath'].'/soft_'.$randstr.'/', $globals['odc']); @scopy($__settings['softpath'].'/var/cache/clear_cache.sh', $__settings['softpath'].'/soft_'.$randstr.'/clear_cache.sh'); sclone_replace($replace_data, $__settings['softpath'].'/config.php', true); $__settings['ser_esdKey'] = serialize(strtolower(__generateUniqueId(33))); $update = "UPDATE s_core_config_values SET value='".$__settings['ser_esdKey']."' WHERE id=3;"; sdb_query($update, $__settings['softdbhost'], $__settings['softdbuser'], $__settings['softdbpass'], $__settings['softdb']); $__settings['ser_uniqueid'] = serialize(strtolower(__generateUniqueId(32))); $update1 = "UPDATE s_core_config_values SET value='".$__settings['ser_uniqueid']."' WHERE id=4;"; sdb_query($update1, $__settings['softdbhost'], $__settings['softdbuser'], $__settings['softdbpass'], $__settings['softdb']); //For install.lock file $file = sfile($__settings['softpath'].'/recovery/install/data/install.lock'); if(empty($file)){ $error[] = 'Could not read the install.lock file.'; return false; } $lock_date = trim($file); $__settings['lock_date'] = date('YmdHi'); $replace_data[$lock_date] = $__settings['lock_date']; sclone_replace($replace_data, $__settings['softpath'].'/recovery/install/data/install.lock', true); // We need the uniqueid $file = sfile($__settings['softpath'].'/recovery/install/data/uniqueid.txt'); if(empty($file)){ $error[] = 'Could not read the file to get the uniqueid.'; return false; } $unique_id = trim($file); $replace_data[$unique_id] = unserialize($__settings['ser_uniqueid']); sclone_replace($replace_data, $__settings['softpath'].'/recovery/install/data/uniqueid.txt', true); $update2 = "UPDATE s_core_shops SET host='".$__settings['domhost']."', hosts='".$__settings['domhost']."', base_path='".$__settings['relativeurl']."' WHERE id=1;"; sdb_query($update2, $__settings['softdbhost'], $__settings['softdbuser'], $__settings['softdbpass'], $__settings['softdb']); }else{ ############### GET ALL THE KEYS ################# @scopy($software['path'].'/update_appkey.php', $__settings['softpath'].'/update_appkey.php'); $resp = swget($__settings['softurl'].'/update_appkey.php'); //Retrieve APP_SECRET to store in .env file if(preg_match('/<appsecret>(.*?)<\/appsecret>/is', $resp, $matches)){ $__settings['APP_SECRET'] = $matches[1]; } //Retrieve public and private key pair and store them in .pem files if(preg_match('/<publickey>(.*?)<\/publickey>/is', $resp, $matches1)){ $__settings['public_key'] = $matches1[1]; } if(preg_match('/<privatekey>(.*?)<\/privatekey>/is', $resp, $matches1)){ $__settings['private_key'] = $matches1[1]; } sunlink($__settings['softpath'].'/update_appkey.php'); #################################################### //For .uniqueid.txt file $file = sfile($__settings['softpath'].'/.uniqueid.txt'); if(empty($file)){ $error[] = 'Could not read the .uniqueid.txt file.'; return false; } $uniqueid = trim($file); $__settings['uniqueid'] = __generateUniqueId(32); $replace_data[$uniqueid] = $__settings['uniqueid']; sclone_replace($replace_data, $__settings['softpath'].'/.uniqueid.txt', true); #################### //For .env file $file = sfile($__settings['softpath'].'/.env'); if(empty($file)){ $error[] = 'Could not read the .env file.'; return false; } soft_preg_replace('/APP_SECRET=("|\')(.*?)("|\')\n/is', $file, $APP_SECRET, 2); $replace_data[$APP_SECRET] = $__settings['APP_SECRET']; soft_preg_replace('/INSTANCE_ID=("|\')(.*?)("|\')\n/is', $file, $INSTANCE_ID, 2); $replace_data[$INSTANCE_ID] = $__settings['uniqueid']; sclone_replace($replace_data, $__settings['softpath'].'/.env', true); #################### //For install.lock file $file = sfile($__settings['softpath'].'/install.lock'); if(empty($file)){ $error[] = 'Could not read the install.lock file.'; return false; } $lock_date = trim($file); $__settings['lock_date'] = date('YmdHi'); $replace_data[$lock_date] = $__settings['lock_date']; sclone_replace($replace_data, $__settings['softpath'].'/install.lock', true); ######################### //For config/jwt/private.pem file $file = sfile($__settings['softpath'].'/config/jwt/private.pem'); if(empty($file)){ $error[] = 'Could not read the private.pem file.'; return false; } $private_key = trim($file); $replace_data[$private_key] = $__settings['private_key']; sclone_replace($replace_data, $__settings['softpath'].'/config/jwt/private.pem', true); #################### //For config/jwt/public_key file $file = sfile($__settings['softpath'].'/config/jwt/public.pem'); if(empty($file)){ $error[] = 'Could not read the public_key file.'; return false; } $public_key = trim($file); $replace_data[$public_key] = $__settings['public_key']; sclone_replace($replace_data, $__settings['softpath'].'/config/jwt/public.pem', true); #################### ############## SQL CHANGES ############### $query = "select `configuration_value` FROM `system_config` WHERE `configuration_key`= 'core.app.shopId';"; $result = sdb_query($query, $__settings['softdbhost'], $__settings['softdbuser'], $__settings['softdbpass'], $__settings['softdb']); $value = $result['0']['configuration_value']; $array = json_decode($value, true); $array['_value']['value'] = $__settings['app_shopid'] = srandstr(16); $new_value = json_encode($array); $replace = "UPDATE `system_config` SET `configuration_value`='".$new_value."' WHERE `configuration_key`= 'core.app.shopId';"; sdb_query($replace, $__settings['softdbhost'], $__settings['softdbuser'], $__settings['softdbpass'], $__settings['softdb']); $replace_data['RedirectMatch 301 ^'.$source_data['relativeurl'].'/$ '.$source_data['softurl'].'/public'] = 'RedirectMatch 301 ^'.$__settings['relativeurl'].'/$ '.$__settings['softurl'].'/public'; } if(sfile_exists($__settings['softpath'].'/.htaccess')){ // If the installation is on root domain we need to change the below relative URL if(is_dom_root($source_data['softpath'])){ //RewriteBase /shopware/ $replace_data['RewriteBase \'/\''] = 'RewriteBase \''.$__settings['relativeurl'].'\''; $replace_data['RewriteBase /'] = 'RewriteBase '.$__settings['relativeurl']; $replace_data['RewriteBase /shopware/'] = 'RewriteBase '.$__settings['relativeurl'].'/'; }elseif(is_dom_root($__settings['softpath'])){ $replace_data['RewriteBase \''.$source_data['relativeurl'].'\''] = 'RewriteBase \'/\''; $replace_data['RewriteBase '.$source_data['relativeurl']] = 'RewriteBase /'; $replace_data['RewriteBase '.$source_data['relativeurl'].'/'] = 'RewriteBase /shopware/'; } sclone_replace($replace_data, $__settings['softpath'].'/.htaccess', true); } @srm($__settings['softpath'].'/var/cache/'); @smkdir($__settings['softpath'].'/var/cache/', $globals['odc']); @schmod($__settings['softpath'].'/var/', $globals['odc'], 1); @schmod($__settings['softpath'].'/media/', $globals['odc'], 1); @scopy($__settings['softpath'].'/soft_'.$randstr.'/clear_cache.sh', $__settings['softpath'].'/var/cache/clear_cache.sh'); @scopy($__settings['softpath'].'/var/log/.htaccess', $__settings['softpath'].'/var/cache/.htaccess'); srm($__settings['softpath'].'/soft_'.$randstr.'/'); } //Check whether the Minimum Software configuration matches function __requirements(){ global $__settings, $error, $software; return true; } function __generateUniqueId($length = 32, $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { $str = ''; $max = mb_strlen($keyspace, '8bit') - 1; for ($i = 0; $i < $length; ++$i) { $str .= $keyspace[rand(0, $max)]; } return $str; } function __post_unzip(){ global $source_data, $replace_data, $__settings; if(preg_match('/^http:\/\//is', $source_data['softurl'])){ $source_url = preg_replace('/^http:\/\//is', '', $source_data['softurl']); }elseif(preg_match('/^http:\/\/www\./is', $source_data['softurl'])){ $source_url = preg_replace('/^http:\/\/www\./is', '', $source_data['softurl']); }elseif(preg_match('/^https:\/\//is', $source_data['softurl'])){ $source_url = preg_replace('/^https:\/\//is', '', $source_data['softurl']); }elseif(preg_match('/^https:\/\/www\./is', $source_data['softurl'])){ $source_url = preg_replace('/^https:\/\/www\./is', '', $source_data['softurl']); } if(preg_match('/^http:\/\//is', $__settings['softurl'])){ $dest_url = preg_replace('/^http:\/\//is', '', $__settings['softurl']); }elseif(preg_match('/^http:\/\/www\./is', $__settings['softurl'])){ $dest_url = preg_replace('/^http:\/\/www\./is', '', $__settings['softurl']); }elseif(preg_match('/^https:\/\//is', $__settings['softurl'])){ $dest_url = preg_replace('/^https:\/\//is', '', $__settings['softurl']); }elseif(preg_match('/^https:\/\/www\./is', $__settings['softurl'])){ $dest_url = preg_replace('/^https:\/\/www\./is', '', $__settings['softurl']); } $replace_data['http://'.$source_url] = 'http://'.$dest_url; $replace_data['http://www.'.$source_url] = 'http://www.'.$dest_url; $replace_data['https://'.$source_url] = 'https://'.$dest_url; $replace_data['https://www.'.$source_url] = 'https://www.'.$dest_url; } ?>