!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g. PHP/5.2.4-2ubuntu5.12 

uname -a: Linux forum.circlefusion.com 2.6.24-19-server #1 SMP Wed Jun 18 15:18:00 UTC 2008 i686 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/home/doku/axrepos/axess/old/wiki/lib/plugins/backup/   drwxrwxr-x
Free 11.48 GB of 97.11 GB (11.82%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     admin.php (10.5 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Backup Tool for DokuWiki
 * 
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Terence J. Grant<tjgrant@tatewake.com>
 */
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!
defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
if(!
defined('DOKU_INCLUDE')) define('DOKU_INCLUDE',DOKU_INC.'inc/');
require_once(
DOKU_PLUGIN 'admin.php');

include_once(
DOKU_PLUGIN.'backup/pref_code.php');

@include_once(
"Archive/Tar.php");    //PEAR Archive/Tar

/**
 * All DokuWiki plugins to extend the admin function
 * need to inherit from this class
 */
class admin_plugin_backup extends DokuWiki_Admin_Plugin
{
var 
$state 0;
var 
$backup '';

    
/**
     * Constructor
     */
    
function admin_plugin_backup()
    {
        
$this->setupLocale();
    }

    
/**
     * return some info
     */
    
function getInfo()
    {
        return array(
            
'author' => 'Terence J. Grant, Andreas Wagner',
            
'email'  => 'tjgrant@tatewake.com, andreas.wagner@em.uni-frankfurt.de',
            
'date'   => '2008-08-24',
            
'name'   => 'BackupTool for DokuWiki',
            
'desc'   => 'A tool to backup your data and configuration.',
            
'url'    => 'http://tatewake.com/wiki/projects:backuptool_for_dokuwiki',
        );
    }

    
/**
     * return sort order for position in admin menu
     */
    
function getMenuSort()
    {
        return 
999;
    }
    
    
/**
     *  return a menu prompt for the admin menu
     *  NOT REQUIRED - its better to place $lang['menu'] string in localised string file
     *  only use this function when you need to vary the string returned
     */
    
function getMenuText()
    {
        return 
'BackupTool for DokuWiki';
    }

    
/**
     * handle user request
     */
    
function handle()
    {
        
$this->state 0;
    
        if (!isset(
$_REQUEST['cmd'])) return;   // first time - nothing to do

        
if (!is_array($_REQUEST['cmd'])) return;

        
$this->backup $_REQUEST['backup'];

        if (
is_array($this->backup))
        {
            
$this->state 1;
        }
    }

    function 
runPearBackup($files$finalfile$tarfilename$compress_type)
    {
        
//Create archive object, add files, compile and compress.
        
$tar = new Archive_Tar($finalfile,$compress_type);
        
$result $tar->createModify($files,'',DOKU_INC);
        
$tar->_Archive_Tar();

        return (
$result) ? $tarfilename.'.'.$compress_type '';    //return filename on success...
    
}

    function 
runExecBackup($files$tarfilename$basename)
    {
        
$result false;
        
$i 0;    //mark for first file
        
$rval 0;

        
//For each item, add it to the file.
        
foreach($files as $item)
        {
//            print("tar ". (($i != 0) ? "-rf " : "-cf ") .$tarfilename." "._getRelativePath($item).'<br/>');
            
if (!bt_exec("tar ". (($i != 0) ? "-rf " "-cf ") .$tarfilename." "._getRelativePath($item)))
            {
                return 
''//tar failed (possibly out of memory)
            
}
            
$i 1;
        }

        if (
bt_exec('bzip2 --version'))
            if (
bt_exec('bzip2 -9 '.$tarfilename)) return $basename.'.bz2';    //Bzip2 compression available.
        
if (bt_exec('gzip --version'))
            if (
bt_exec('gzip -9 '.$tarfilename)) return $basename.'.gz';    //Gzip compression available.
        
return $basename;                    //No compression available, but tar succeeded
    
}

    
/**
     * output appropriate html
     */
    
function html()
    {
        global 
$conf;
        global 
$bt_loaded$bt_settings;

        
$bt_pearWorks = (class_exists("Archive_Tar")) ? true false;
        
$bt_execWorks bt_exec("tar --version");

        if (!(
$bt_pearWorks || $bt_execWorks))    //if neither works, display the error message.
        
{
            print 
$this->plugin_locale_xhtml('error');
        }
        else
        {
            if (
$this->state == 0)
            {
                
//Print Backup introduction page
                
print $this->plugin_locale_xhtml('intro');
    
                
ptln('<form action="'.wl($ID).'" method="post">');
                
ptln('    <input type="hidden" name="do"   value="admin" />');
                
ptln('    <input type="hidden" name="page" value="'.$this->getPluginName().'" />');
                
ptln('    <input type="hidden" name="cmd[backup]" value="true" />');
                print 
'<center>';
    
//                ptln('bt_settings[type] = '.$bt_settings['type'].'<br/>');
                
ptln('    Backup method: <select name="backup[type]">');
                if (
$bt_pearWorks == trueptln('        <option value="PEAR" '.(strcmp($bt_settings['type'], 'PEAR') == 'selected' '').'>PEAR Archive Library</option>');
                if (
$bt_execWorks == trueptln('        <option value="exec" '.(strcmp($bt_settings['type'], 'exec') == 'selected' '').'>GNU Tar</option>');
                if (
$bt_execWorks == trueptln('        <option value="lazy" '.(strcmp($bt_settings['type'], 'lazy') == 'selected' '').'>Lazy and Quick Method</option>');
                
ptln('    </select><br/><br/>');

                print 
'<table class="inline">';
                print 
'    <tr><th> '.$this->getLang('bt_item_type').' </th><th> '.$this->getLang('bt_add_to_archive').' </th></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_pages').' </td><td><input type="checkbox" name="backup[pages]" '.$bt_settings['pages'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_revisions').' </td><td><input type="checkbox" name="backup[revisions]" '.$bt_settings['revisions'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_subscriptions').'</td><td><input type="checkbox" name="backup[subscriptions]" '.$bt_settings['subscriptions'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_media').' </td><td><input type="checkbox" name="backup[media]" '.$bt_settings['media'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_config').' </td><td><input type="checkbox" name="backup[config]" '.$bt_settings['config'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_templates').'</td><td><input type="checkbox" name="backup[templates]" '.$bt_settings['templates'].'/></td></tr>';
                print 
'    <tr><td> '.$this->getLang('bt_plugins').'</td><td><input type="checkbox" name="backup[plugins]" '.$bt_settings['plugins'].'/></td></tr>';
                print 
'</table>';

                print 
'<br />';
                print 
'<p><input type="submit" value="'.$this->getLang('bt_create_backup').'"></p></center>';
                print 
'</form>';
            }
            else
            {
                
//Save settings...
                
$bt_settings['type']                    = strcmp($this->backup['type'], 'PEAR') == 'PEAR' :
                                                                                
strcmp($this->backup['type'], 'exec') == 'exec' 'lazy';
                
$bt_settings['pages']                    = strcmp($this->backup['pages'], 'on') == 'checked' '';
                
$bt_settings['revisions']            = strcmp($this->backup['revisions'], 'on') == 'checked' '';
                
$bt_settings['subscriptions']    = strcmp($this->backup['subscriptions'], 'on') == 'checked' '';
                
$bt_settings['media']                    = strcmp($this->backup['media'], 'on') == 'checked' '';
                
$bt_settings['config']                = strcmp($this->backup['config'], 'on') == 'checked' '';
                
$bt_settings['templates']            = strcmp($this->backup['templates'], 'on') == 'checked' '';
                
$bt_settings['plugins']                = strcmp($this->backup['plugins'], 'on') == 'checked' '';
                
bt_save();

                
//Print outgoing message...
                
print $this->plugin_locale_xhtml('outro');

                
//Generate file names
                
$tarfilename 'dw-backup-'.date('Ymd-His').".tar";
                
$compress_type = (extension_loaded('bz2') ? 'bz2' : (extension_loaded('zlib') ? 'gz' ''));
                
$finalfile $tarfilename.'.'.$compress_type;

                
//Generate array of files
                
$files = array(DOKU_INC "conf/smileys.conf");

                if (
strcmp($this->backup['type'], 'lazy') == 0)    //Use lazy method
                
{
                    if (
$this->backup['pages'])                    $files array_merge($files, array($conf['datadir']));
                    if (
$this->backup['revisions'])            $files array_merge($files, array($conf['olddir']));
                    if (
$this->backup['subscriptions'])    $files array_merge($files, array($conf['metadir']));
                    if (
$this->backup['config'])                $files array_merge($files, array(DOKU_INC "conf"));
                    if (
$this->backup['templates'])            $files array_merge($files, array(DOKU_INC "lib/tpl"));
                    if (
$this->backup['plugins'])                $files array_merge($files, array(DOKU_INC "lib/plugins"));
                    if (
$this->backup['media'])                    $files array_merge($files, array($conf['mediadir']));
                }
                else    
//Use filtered files method
                
{
                    if (
$this->backup['pages'])                    $files array_merge($filesdirectoryToArray($conf['datadir']));
                    if (
$this->backup['revisions'])            $files array_merge($filesdirectoryToArray($conf['olddir']));
                    if (
$this->backup['subscriptions'])    $files array_merge($filesdirectoryToArray($conf['metadir']));
                    if (
$this->backup['config'])                $files array_merge($filesdirectoryToArray(DOKU_INC "conf"));
                    if (
$this->backup['templates'])            $files array_merge($filesdirectoryToArray(DOKU_INC "lib/tpl"));
                    if (
$this->backup['plugins'])                $files array_merge($filesdirectoryToArray(DOKU_INC "lib/plugins"));
                    if (
$this->backup['media'])
                    {
                        
$files array_merge($filesdirectoryToArray($conf['mediadir']));
                        
$files array_filter($files"filterBackups");
                    }
                }

                
//Run the backup method
                
if (strcmp($this->backup['type'], 'PEAR') == 0)
                    
$finalfile $this->runPearBackup($filesDOKU_INC.'data/media/'.$finalfile$tarfilename$compress_type);
                else    
//exec and lazy both use the exec method
                    
$finalfile $this->runExecBackup($filesDOKU_INC.'data/media/'.$tarfilename$tarfilename);

                if (
$finalfile == '')
                {
                    print 
$this->plugin_locale_xhtml('memory');
                }
                else
                {
                    print 
$this->plugin_locale_xhtml('download');
                    print 
$this->plugin_render('{{:'.$finalfile.'}}');
                }
                
ob_flush(); flush();
            }
        }

        print 
$this->plugin_locale_xhtml('donate');
    }
}

function 
bt_exec($cmd)
{
    
$oval = array();
    
$rval 0;
    
exec($cmd$oval$rval);

    return ((
$rval == 0) ? true false);    
}

//From Uwe Koloska
function _getRelativePath($path)
{
    global 
$conf;
    
    
$pattern '/'.preg_quote(DOKU_INC'/').'/';
    
$pname preg_replace($pattern,'',$path);
    return 
$pname;
}

// from http://snippets.dzone.com/posts/show/155 :
function directoryToArray($directory) {
    
$array_items = array();
    if (
$handle opendir($directory)) {
        while (
false !== ($file readdir($handle))) {
            if (
$file != "." && $file != ".." && $file != "_dummy" && $file != "disabled") {
                
$file $directory "/" $file;
                if (
is_dir($file)) {
                    
$array_items array_merge($array_itemsdirectoryToArray($file));
                } else {
                    if(
filesize($file) !== 0$array_items[] = preg_replace("/\/\//si""/"$file);
                }
            }
        }
        
closedir($handle);
    }
    return 
$array_items;
}

function 
filterBackups($InputElement) {
    
$result = !preg_match("/" str_replace("/""\/"$conf['mediadir'] . "/dw-backup-\d{8}-\d{6}\.tar[\.gz|\.bz2]?") . "/"$InputElement);
  
$result &= !preg_match("/" str_replace("/""\/"$conf['mediadir'] . "/\.DS_Store?") . "/"$InputElement);
  
$result &= !preg_match("/" str_replace("/""\/"$conf['mediadir'] . "/\._.?") . "/"$InputElement);
    return 
$result;
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0076 ]--