2018-07-18 21:28:30 +02:00
< ? php
ini_set ( 'display_errors' , 1 );
ini_set ( 'display_startup_errors' , 1 );
error_reporting ( E_ALL );
require_once ( '../../common.php' );
require_once ( './class.update.php' );
checkSession ();
if ( ! checkAccess () ) {
echo " Error, you do not have access to update Codiad. " ;
exit ;
}
/**
* Initiate the update class so we do not have to redefine their
* variables .
*/
class updater {
/**
* Telaaedifex Codiad updater
*
* This updater will extract an archive and then update each file
* with file put contents .
*/
/**
* Constants
*/
/**
* Properties
*/
public $archive = " " ;
public $path = " " ;
public $protocol = " " ;
function __construct () {
$update = new Update ();
$this -> archive = $update -> archive ;
$this -> path = Common :: getConstant ( 'BASE_PATH' );
$this -> protocol = $this -> check_protocol ();
//Trigger update
$this -> update ();
}
function check_protocol () {
if ( extension_loaded ( 'curl' ) ) {
//Curl is loaded
return " curl " ;
} elseif ( ini_get ( 'allow_url_fopen' ) ) {
//Remote get file is enabled
return " fopen " ;
} else {
//None are enabled exit.
return " none " ;
}
}
function copyr ( $source , $dest ) {
// Check for symlinks
if ( is_link ( $source )) {
return symlink ( readlink ( $source ), $dest );
}
// Simple copy for a file
if ( is_file ( $source )) {
return copy ( $source , $dest );
}
// Make destination directory
if ( ! is_dir ( $dest )) {
mkdir ( $dest );
}
// Loop through the folder
$dir = dir ( $source );
while ( false !== $entry = $dir -> read ()) {
// Skip pointers
if ( $entry == '.' || $entry == '..' ) {
continue ;
}
// Deep copy directories
$this -> copyr ( " $source / $entry " , " $dest / $entry " );
}
// Clean up
$dir -> close ();
return true ;
}
//////////////////////////////////////////////////////////////////
// Download latest archive
//////////////////////////////////////////////////////////////////
function download () {
switch ( $this -> protocol ) {
case ( " curl " ) :
$filepath = $this -> path . " /update.zip " ;
if ( file_exists ( $filepath ) ) {
unlink ( $filepath );
}
$curl = curl_init ();
curl_setopt ( $curl , CURLOPT_URL , $this -> archive );
//curl_setopt($curl, CURLOPT_POSTFIELDS, "");
curl_setopt ( $curl , CURLOPT_HEADER , 0 );
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
curl_setopt ( $curl , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13' );
$raw_file_data = curl_exec ( $curl );
curl_close ( $curl );
file_put_contents ( $filepath , $raw_file_data );
return ( filesize ( $filepath ) > 0 ) ? true : false ;
break ;
case ( " fopen " ) :
break ;
}
}
function extract () {
if ( ! extension_loaded ( 'zip' ) ) {
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" error_box \" >Error, the php zip extension does not seem to be installed. Can not continue with update. Please install the <a href= \" http://php.net/manual/en/book.zip.php \" target= \" _blank \" >php zip extension</a></p>'> ... </p>';</script> " ;
return false ;
}
$zip = new ZipArchive ;
if ( $zip -> open ( $this -> path . " /update.zip " ) === TRUE ) {
$zip -> extractTo ( $this -> path );
$zip -> close ();
return true ;
} else {
return false ;
}
}
function remove_directory ( $path ) {
$files = glob ( $path . '/*' );
foreach ( $files as $file ) {
is_dir ( $file ) ? $this -> remove_directory ( $file ) : unlink ( $file );
}
rmdir ( $path );
return ;
}
function update () {
2018-07-24 14:56:42 +02:00
$sessions = " ../../data/sessions " ;
2018-07-18 21:28:30 +02:00
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Downloading latest version ... </p>';</script> " ;
if ( ! $this -> download () ) {
echo " <script>document.getElementById('progress').innerHTML += '<br><p class= \" error_box \" >Error downloading latest version</p>';</script> " ;
return ;
}
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Extracting update ... </p>';</script> " ;
if ( ! $this -> extract () ) {
echo " <script>document.getElementById('progress').innerHTML += '<br><p class= \" error_box \" >Error extracting update</p>';</script> " ;
return ;
}
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Updating ... </p>';</script> " ;
2018-07-24 14:56:42 +02:00
//Add Sessions path if not there.
/**
* Create sessions path .
*/
if ( ! is_dir ( $sessions ) ) {
2018-07-24 15:16:05 +02:00
mkdir ( $sessions , 755 );
2018-07-24 14:56:42 +02:00
}
2018-07-18 21:28:30 +02:00
$src = $this -> path . " /codiad-master/ " ;
$src_folder = $this -> path . " /codiad-master " ;
$dest = $this -> path . " / " ;
$this -> copyr ( $src , $dest );
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Removing Update ... </p>';</script> " ;
2018-07-24 16:01:00 +02:00
unlink ( $src . " .travis.yml " );
2018-07-18 21:28:30 +02:00
$this -> remove_directory ( $src );
}
}
?>
<! DOCTYPE HTML >
< html >
< head >
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " >
< title > Codiad Update </ title >
< style >
html {
}
body {
background - color : #1a1a1a;
color : #fff;
font : normal 13 px 'Ubuntu' , sans - serif ;
height : 100 % ;
overflow : hidden ;
width : 100 % ;
}
. title {
color : #666;
display : block ;
//float: left;
//font-size: 15px;
font - weight : 500 ;
margin : 10 px ;
text - shadow : 1 px 1 px 3 px rgba ( 0 , 0 , 0 , 0.6 );
}
#progress {
position : fixed ;
top : 50 % ;
left : 50 % ;
transform : translate ( - 50 % , - 50 % );
}
</ style >
< script >
</ script >
</ head >
< body >
< h1 class = " title " style = " text-align: center; " >
Telaaedifex Codiad Updater
</ h1 >
< div id = " progress " >
Starting Update ...
</ div >
</ body >
</ html >
< ? php
new updater ();
?> <?php
ini_set ( 'display_errors' , 1 );
ini_set ( 'display_startup_errors' , 1 );
error_reporting ( E_ALL );
require_once ( '../../common.php' );
require_once ( './class.update.php' );
checkSession ();
if ( ! checkAccess () ) {
echo " Error, you do not have access to update Codiad. " ;
exit ;
}
/**
* Initiate the update class so we do not have to redefine their
* variables .
*/
class updater {
/**
* Telaaedifex Codiad updater
*
* This updater will extract an archive and then update each file
* with file put contents .
*/
/**
* Constants
*/
/**
* Properties
*/
public $archive = " " ;
public $path = " " ;
public $protocol = " " ;
function __construct () {
$update = new Update ();
$this -> archive = $update -> archive ;
$this -> path = Common :: getConstant ( 'BASE_PATH' );
$this -> protocol = $this -> check_protocol ();
//Trigger update
$this -> update ();
2018-07-24 14:32:06 +02:00
//Delete File
unlink ( __FILE__ );
2018-07-18 21:28:30 +02:00
}
function check_protocol () {
if ( extension_loaded ( 'curl' ) ) {
//Curl is loaded
return " curl " ;
} elseif ( ini_get ( 'allow_url_fopen' ) ) {
//Remote get file is enabled
return " fopen " ;
} else {
//None are enabled exit.
return " none " ;
}
}
//////////////////////////////////////////////////////////////////
// Download latest archive
//////////////////////////////////////////////////////////////////
function download () {
switch ( $this -> protocol ) {
case ( " curl " ) :
$filepath = $this -> path . " /update.zip " ;
$curl = curl_init ();
curl_setopt ( $curl , CURLOPT_URL , $this -> archive );
//curl_setopt($curl, CURLOPT_POSTFIELDS, "");
curl_setopt ( $curl , CURLOPT_HEADER , 0 );
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
curl_setopt ( $curl , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13' );
$raw_file_data = curl_exec ( $curl );
curl_close ( $curl );
file_put_contents ( $filepath , $raw_file_data );
return ( filesize ( $filepath ) > 0 ) ? true : false ;
break ;
case ( " fopen " ) :
break ;
}
}
function extract () {
if ( ! extension_loaded ( 'zip' ) ) {
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" error_box \" >Error, the php zip extension does not seem to be installed. Can not continue with update. Please install the <a href= \" http://php.net/manual/en/book.zip.php \" target= \" _blank \" >php zip extension</a></p>'> ... </p>';</script> " ;
return false ;
}
$zip = new ZipArchive ;
if ( $zip -> open ( $this -> path . " /update.zip " , ZipArchive :: OVERWRITE ) === TRUE ) {
$zip -> extractTo ( $this -> path );
$zip -> close ();
return true ;
} else {
return false ;
}
}
function update () {
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Downloading latest version ... </p>';</script> " ;
if ( ! $this -> download () ) {
echo " <script>document.getElementById('progress').innerHTML += '<br><p class= \" error_box \" >Error downloading latest version</p>';</script> " ;
}
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Extracting update ... </p>';</script> " ;
if ( ! $this -> extract () ) {
echo " <script>document.getElementById('progress').innerHTML += '<br><p class= \" error_box \" >Error extracting update</p>';</script> " ;
}
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Updating ... </p>';</script> " ;
try {
exec ( " cp -a " );
} catch ( exception $e ) {
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" error_box \" >Update Failed ... </p>';</script> " ;
return ;
}
echo " <script>document.getElementById('progress').innerHTML = '<p class= \" status_box \" >Removing Update ... </p>';</script> " ;
exec ( " rm -rf " . $this -> path . " /update.zip;rm -rf " . $this -> path . " /codiad-master " );
}
}
?>
<! DOCTYPE HTML >
< html >
< head >
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " >
< title > Codiad Update </ title >
< style >
html {
}
body {
background - color : #1a1a1a;
color : #fff;
font : normal 13 px 'Ubuntu' , sans - serif ;
height : 100 % ;
overflow : hidden ;
width : 100 % ;
}
. title {
color : #666;
display : block ;
//float: left;
//font-size: 15px;
font - weight : 500 ;
margin : 10 px ;
text - shadow : 1 px 1 px 3 px rgba ( 0 , 0 , 0 , 0.6 );
}
#progress {
position : fixed ;
top : 50 % ;
left : 50 % ;
transform : translate ( - 50 % , - 50 % );
}
</ style >
< script >
</ script >
</ head >
< body >
< h1 class = " title " style = " text-align: center; " >
Telaaedifex Codiad Updater
</ h1 >
< div id = " progress " >
Starting Update ...
</ div >
</ body >
</ html >
< ? php
new updater ();
?>