}
 $dn = cwget('https://github.com/CuteNews/cute-news-repo/archive/master.zip');
 if ($dn) {
     $w = fopen($update_file_source, 'w');
     if (!$w) {
         create_html_template('Cannot upload the update file ' . $update_file_source);
     }
     if (!fwrite($w, $dn)) {
         create_html_template('Cannot write the update file ' . $update_file_source);
     }
     fclose($w);
 } else {
     create_html_template('Cannot download the update file: https://github.com/CuteNews/cute-news-repo/archive/master.zip');
 }
 $zipfile = new zipfile();
 $zipfile->read_zip($update_file_source);
 foreach ($zipfile->files as $filea) {
     $path = SERVDIR;
     $temp = substr($filea['dir'], 31);
     $pathtofile = !empty($temp) ? $temp . '/' . $filea['name'] : $filea['name'];
     if (array_key_exists($pathtofile, $hashes)) {
         if (file_exists($path . '/' . $pathtofile)) {
             $hash_my = md5_file($path . '/' . $pathtofile);
         } else {
             $hash_my = false;
         }
         if ($hash_my != $hashes[$pathtofile]) {
             foreach (explode('/', $pathtofile) as $dc) {
                 $path .= '/' . $dc;
                 if (strpos($dc, '.') === false) {
                     if (!is_dir($path) && !mkdir($path, 0777)) {
Exemple #2
0
 function extract_zip($archive, $path = '')
 {
     $basename = false;
     if (substr($archive, -4) == '.zip') {
         if (is_file($archive)) {
             require_once dirname(__FILE__) . '/zip.class.php';
             $basename = substr(basename($archive), 0, -4);
             $zipfile = new zipfile();
             $zipfile->read_zip($archive);
             if (empty($path)) {
                 $path = dirname($archive);
             }
             $path .= '/' . $basename;
             if (!is_dir($path)) {
                 $this->mkdir($path);
             }
             for ($i = 0; isset($zipfile->dirs[$i]); ++$i) {
                 $temp = explode('/', $zipfile->dirs[$i]);
                 $sub_path = $path;
                 for ($j = 0; isset($temp[$j]); ++$j) {
                     if ($temp[$j] != '') {
                         $sub_path .= '/' . $temp[$j];
                         if (!is_dir($sub_path)) {
                             $this->mkdir($sub_path);
                         }
                     }
                 }
             }
             for ($i = 0; isset($zipfile->files[$i]); ++$i) {
                 $this->file_put_contents($path . $zipfile->files[$i]['dir'] . '/' . $zipfile->files[$i]['name'], $zipfile->files[$i]['data']);
             }
         }
     }
     return $basename;
 }
Exemple #3
0
function dashboard_backup()
{
    $name = '';
    require_once SERVDIR . '/core/zip.class.php';
    if (request_type('POST')) {
        cn_dsi_check();
        $name = trim(preg_replace('/[^a-z0_9_]/i', '', REQ('backup_name')));
        $backup_sysonly = REQ('backup_sysonly');
        if (!$name) {
            cn_throw_message('Enter correct backup name', 'e');
        } else {
            // Do compress files
            $zip = new zipfile();
            if (!$backup_sysonly) {
                $zip->create_dir('news/');
                $zip->create_dir('users/');
                // Compress news
                $news = scan_dir(cn_path_construct(SERVDIR, 'cdata', 'news'));
                foreach ($news as $file) {
                    $data = join('', file(cn_path_construct(SERVDIR, 'cdata', 'news') . $file));
                    $zip->create_file($data, 'news' . DIRECTORY_SEPARATOR . $file);
                }
                // Compress users
                $news = scan_dir(cn_path_construct(SERVDIR, 'cdata', 'users'));
                foreach ($news as $file) {
                    $data = join('', file(cn_path_construct(SERVDIR, 'cdata', 'users') . $file));
                    $zip->create_file($data, 'news' . DIRECTORY_SEPARATOR . $file);
                }
                $files = array('conf.php', 'users.txt');
            } else {
                $files = array('conf.php');
            }
            // Append files
            foreach ($files as $file) {
                $data = join('', file(cn_path_construct(SERVDIR, 'cdata') . $file));
                $zip->create_file($data, $file);
            }
            // write compressed data
            $wb = fopen(cn_path_construct(SERVDIR, 'cdata', 'backup') . $name . '.zip', 'w+');
            fwrite($wb, $zip->zipped_file());
            fclose($wb);
            // backup created
            cn_throw_message('Backup sucessfull created');
            unset($zip);
            $name = '';
        }
    } elseif ($unpack_file = REQ('unpack', 'GET')) {
        cn_dsi_check();
        if (file_exists($cf = cn_path_construct(SERVDIR, 'cdata', 'backup') . $unpack_file . 'zip')) {
            $zip = new zipfile();
            $files = $zip->read_zip(cn_path_construct(SERVDIR, 'cdata', 'backup') . $unpack_file . 'zip');
            unset($zip);
            // replace files from zip-archive
            foreach ($files as $fdata) {
                $file = $fdata['dir'] . DIRECTORY_SEPARATOR . $fdata['name'];
                $w = fopen(cn_path_construct(SERVDIR, 'cdata') . $file, 'w+');
                fwrite($w, $fdata['data']);
                fclose($w);
            }
            unlink($cf);
            cn_throw_message('File decompressed, backup removed');
        } else {
            cn_throw_message('File [' . cn_htmlspecialchars($unpack_file) . '] not exists', 'e');
        }
    }
    $archives = array();
    $list = scan_dir(cn_path_construct(SERVDIR, 'cdata', 'backup'), '\\.zip');
    foreach ($list as $d) {
        $file = cn_path_construct(SERVDIR, 'cdata', 'backup') . $d;
        $archives[] = array('name' => str_replace('.zip', '', $d), 'size' => filesize($file), 'date' => date('Y-m-d H:i:s', filemtime($file)));
    }
    cn_assign('archives, name', $archives, $name);
    echoheader('-@dashboard/style.css', 'Backups');
    echo exec_tpl('dashboard/backups');
    echofooter();
}
Exemple #4
0
    $mcodes[$rsrow['module_code']] = $rsrow['version'];
}
// read the manifests of existing packages into $packages
$packages = array();
$d = dir(_BASEPATH_ . '/tmp/packages');
$i = 0;
$filenames = array();
while (false !== ($entry = $d->read())) {
    if (substr($entry, -4) == '.zip') {
        $filename = substr($entry, 0, -4);
        if (is_file(_BASEPATH_ . '/tmp/packages/' . $filename . '.info')) {
            $filenames[$i] = $entry;
            $packages[$i++] = _BASEPATH_ . '/tmp/packages/' . $filename . '.info';
        } else {
            // read the manifest from the zip file
            $zipfile->read_zip(_BASEPATH_ . '/tmp/packages/' . $entry);
            $found = false;
            $manifest_content = '';
            foreach ($zipfile->files as $zfile) {
                if ($zfile['name'] == 'manifest.xml' && $zfile['dir'] == '/') {
                    $found = true;
                    $filenames[$i] = $entry;
                    $manifest_content = $zfile['data'];
                    break;
                }
            }
            if ($found) {
                // now save it as a separate file to speed things up next time
                $fileop->file_put_contents(_BASEPATH_ . '/tmp/packages/' . $filename . '.info', $manifest_content);
                $packages[$i++] = _BASEPATH_ . '/tmp/packages/' . $filename . '.info';
            }