<?php
ob_start();
error_reporting(0);
session_start();
include('../includes/Request.php');
include('../includes/String.php');
include('import.php');
if(!isset($_REQUEST['do']))
{
die('Hi you !');
}
$do=$_REQUEST['do'];
switch ($do) {
case 'connect':
checkConnect();
break;
case 'complete':
startInstall();
break;
}
function cronjob_exists($command){
$cronjob_exists=false;
exec('crontab -l', $crontab);
if(isset($crontab)&&is_array($crontab)){
$crontab = array_flip($crontab);
if(isset($crontab[$command])){
$cronjob_exists=true;
}
}
return $cronjob_exists;
}
// Append a cronjob
function append_cronjob($command){
if(is_string($command)&&!empty($command)&&cronjob_exists($command)===FALSE){
//add job to crontab
exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $output);
}
return $output;
}
function startInstall()
{
$dbhost=trim($_REQUEST['dbhost']);
$dbuser=trim($_REQUEST['dbuser']);
$dbpass=trim($_REQUEST['dbpass']);
$dbname=isset($_REQUEST['dbname'])?trim($_REQUEST['dbname']):'';
$dbport=trim($_REQUEST['dbport']);
// $url=trim($_REQUEST['url']);
$path=trim($_REQUEST['path']);
$username=trim($_REQUEST['username']);
$email=trim($_REQUEST['email']);
$password=trim($_REQUEST['password']);
$secretKey=String::randAlpha(20);
$isHttp=$_SERVER['HTTPS'];
$beforeUrl=($isHttp=='on')?'https://':'http://';
$host=$beforeUrl.$_SERVER['HTTP_HOST'];
$uri=$host.$_SERVER['REQUEST_URI'];
preg_match('/(.*?)\/install/i', $uri,$match);
$url=$match[1];
$theHost=$url;
$parseUrl=parse_url($url);
if(isset($parseUrl['host']))
{
$theHost=$parseUrl['host'].$parseUrl['path'];
}
// echo $path;
// die();
// define("ENCRYPT_SECRET_KEY", $secretKey);
if(!preg_match('/^http/i', $url))
{
$url=$beforeUrl.$url;
}
if(!preg_match('/^https?.*?\/$/i', $url))
{
$url=$url.'/';
}
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport);
if(isset($conn->connect_error[5]))
{
echo json_encode(array('error'=>'yes'));
die();
}
if(!isset($dbname[1]))
{
$dbname='noblessecms_db'.String::randText(5);
$conn->query("CREATE DATABASE $dbname CHARACTER SET utf8 COLLATE utf8_general_ci;");
$conn->query("GRANT ALL ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';");
$conn->query("FLUSH PRIVILEGES;");
if(isset($conn->connect_error[5]))
{
echo json_encode(array('error'=>'yes','message'=>'Can not connect to database'));
die();
}
$conn->select_db($dbname);
}
$rootPath=dirname(dirname(__FILE__)).'/';
if(!file_exists($rootPath.'.htaccess'))
{
copy($rootPath.'install/htaccess.txt',$rootPath.'.htaccess');
}
// Check & create htaccess
$requestUri=$_SERVER['REQUEST_URI'];
$pathSelf=$_SERVER['PHP_SELF'];
if(isset($requestUri[12]))
{
// $requestUri=dirname($requestUri).'/';
$pathSelf=dirname(dirname($pathSelf)).'/';
$getData=file_get_contents($rootPath.'.htaccess');
$getData=preg_replace('/RewriteBase.*/i', 'RewriteBase '.$pathSelf, $getData);
chmod($rootPath.'.htaccess', 0666);
$fp=fopen($rootPath.'.htaccess','w');
fwrite($fp,$getData);
fclose($fp);
chmod($rootPath.'.htaccess', 0644);
}
$getData=file_get_contents($rootPath.'.htaccess');
$getData=str_replace('RewriteBase \/', 'RewriteBase /', $getData);
chmod($rootPath.'.htaccess', 0666);
$fp=fopen($rootPath.'.htaccess','w');
fwrite($fp,$getData);
fclose($fp);
chmod($rootPath.'.htaccess', 0644);
$loadData=file_get_contents($rootPath.'config.php');
$tmpPath=str_replace('\\', '/', $rootPath);
$replace=array(
'/"dbhost" \=\> ".*?"/i'=>'"dbhost" => "'.$dbhost.'"',
'/"dbuser" \=\> ".*?"/i'=>'"dbuser" => "'.$dbuser.'"',
'/"dbpassword" \=\> ""/i'=>'"dbpassword" => "'.$dbpass.'"',
'/"dbname" \=\> ".*?"/i'=>'"dbname" => "'.$dbname.'"',
'/"dbport" \=\> ".*?"/i'=>'"dbport" => "'.$dbport.'"',
'/root_path = \'.*?\';/i'=>'root_path = \''.$tmpPath.'\';',
'/root_url = \'.*?\';/i'=>'root_url = \''.$theHost.'\';',
'/"ENCRYPT_SECRET_KEY", ".*?"/i'=>'"ENCRYPT_SECRET_KEY", "'.$secretKey.'"'
);
$loadData=preg_replace(array_keys($replace), array_values($replace), $loadData);
chmod($rootPath.'config.php', 0666);
$fp=fopen($rootPath.'config.php','w');
fwrite($fp,$loadData);
fclose($fp);
chmod($rootPath.'config.php', 0644);
$importStatus='';
try {
import($conn,'db.sql');
} catch (Exception $e) {
$importStatus=$e->getMessage();
}
if(isset($importStatus[2]))
{
echo json_encode(array('error'=>'yes','message'=>$importStatus));
die();
}
$ip=$_SERVER['REMOTE_ADDR'];
$date_added=date('Y-m-d H:i:s');
$md5Pass=String::encrypt($password,$secretKey);
$query=$conn->query("insert into users(groupid,firstname,lastname,username,email,password,ip,date_added) values('1','Admin','System','$username','$email','$md5Pass','$ip','$date_added')");
if(isset($conn->error[5]))
{
echo json_encode(array('error'=>'yes','message'=>$conn->error));
die();
}
$query=$conn->query("select * from users");
$rowData=$query->fetch_assoc();
$id=$rowData['userid'];
$query=$conn->query("insert into address(userid,firstname,lastname) values('$id','Admin','System')");
if(isset($conn->error[5]))
{
echo json_encode(array('error'=>'yes','message'=>$conn->error));
die();
}
rename('../install','../installBackup');
exec('crontab -r');
append_cronjob('* * * * * curl -s '.$url.'api/cronjob/run.php');
$result['username']=Request::get('username');
$result['password']=Request::get('password');
$result['siteurl']=$url.'admincp/';
$result['Urlfontend']=$url;
$result['error']='no';
echo json_encode($result);
die();
}
function checkConnect()
{
$dbhost=trim($_REQUEST['dbhost']);
$dbuser=trim($_REQUEST['dbuser']);
$dbpass=trim($_REQUEST['dbpass']);
$dbname=trim($_REQUEST['dbname']);
$dbport=trim($_REQUEST['dbport']);
$conn = new mysqli($dbhost, $dbuser, $dbpass, '', $dbport);
if(isset($conn->connect_error[5]))
{
die('ERRORCONNECT');
}
die('OK');
}
?>
|