Ejemplo n.º 1
0
function duplicate_wordpress($servername)
{
    $unix = new unix();
    $q = new mysql();
    $free = new freeweb($servername);
    $WORKING_DIRECTORY = $free->www_dir;
    if ($free->groupware_duplicate == null) {
        build_progress("{$servername}: {duplicate} {$servername} no duplicate set...", 42);
        sleep(2);
        return false;
    }
    $free2 = new freeweb($free->groupware_duplicate);
    if ($free2->mysql_database == null) {
        echo "Fatal: {$free->groupware_duplicate} did not have any such DB set, try to find it..\n";
        $free2->mysql_database = $free2->CreateDatabaseName();
        echo "Fatal: {$free->groupware_duplicate} = {$free2->mysql_database}\n";
    }
    if (!$q->DATABASE_EXISTS($free2->mysql_database, true)) {
        build_progress("{$servername}: {duplicate} {$free->groupware_duplicate} did not have any database...", 42);
        sleep(2);
        return false;
    }
    $srcdir = $free2->www_dir;
    $Mysqlpassword = null;
    $cp = $unix->find_program("cp");
    $rm = $unix->find_program("rm");
    if (@is_link($WORKING_DIRECTORY)) {
        $WORKING_DIRECTORY = @readlink($WORKING_DIRECTORY);
    }
    if (is_dir($WORKING_DIRECTORY)) {
        build_progress("{$servername}: {removing} {$WORKING_DIRECTORY}...", 42);
        sleep(2);
        shell_exec("{$rm} -rf {$WORKING_DIRECTORY}/*");
    }
    @mkdir($WORKING_DIRECTORY, 0755, true);
    build_progress("{$servername}: {installing} {from} {$srcdir}...", 42);
    shell_exec("{$cp} -rf {$srcdir}/* {$WORKING_DIRECTORY}/");
    $wordpressDB = $free->mysql_database;
    if ($wordpressDB == null) {
        $wordpressDB = $free->CreateDatabaseName();
    }
    if ($q->DATABASE_EXISTS($wordpressDB)) {
        build_progress("{$servername}: {remove_database} {$wordpressDB}...", 42);
        sleep(2);
        if (!$q->DELETE_DATABASE($wordpressDB)) {
            build_progress("{$servername}: {remove_database} {$wordpressDB} {failed}...", 42);
            return false;
        }
        if (!$q->CREATE_DATABASE($wordpressDB, true)) {
            build_progress("{$servername}: {create_database} {$wordpressDB} {failed}...", 42);
            return false;
        }
    }
    if (!$q->DATABASE_EXISTS($wordpressDB)) {
        if (!$q->CREATE_DATABASE($wordpressDB, true)) {
            build_progress("{$servername}: {create_database} {$wordpressDB} {failed}...", 42);
            return false;
        }
    }
    build_progress("{$servername}: {backup_database} {from} {$free2->mysql_database}...", 42);
    $mysqldump = $unix->find_program("mysqldump");
    $q = new mysql();
    if ($q->mysql_password != null) {
        $Mysqlpassword = "******" . $unix->shellEscapeChars($q->mysql_password);
    }
    $t = time();
    $TMP_FILE = $unix->FILE_TEMP();
    $cmdline = trim("{$mysqldump} --add-drop-table --single-transaction --force --insert-ignore -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$Mysqlpassword} {$free2->mysql_database} >{$TMP_FILE} 2>&1");
    if ($GLOBALS["VERBOSE"]) {
        echo "{$cmdline}\n";
    }
    $results = array();
    exec($cmdline, $results);
    while (list($num, $ligne) = each($results)) {
        echo "{$ligne}\n";
        if (preg_match("#ERROR\\s+([0-9]+)#", $ligne)) {
            build_progress("{$servername}: {restore_database} {to} {$wordpressDB} {failed}..", 42);
            sleep(3);
            return false;
        }
    }
    build_progress("{$servername}: {restore_database} {to} {$wordpressDB}..", 42);
    $mysqlbin = $unix->find_program("mysql");
    $cmd = "{$mysqlbin} --batch --force -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$Mysqlpassword} --database={$wordpressDB} <{$TMP_FILE} 2>&1";
    if ($GLOBALS["VERBOSE"]) {
        echo "{$cmd}\n";
    }
    exec($cmd, $results);
    while (list($num, $ligne) = each($results)) {
        echo "{$ligne}\n";
        if (preg_match("#ERROR\\s+([0-9]+)#", $ligne)) {
            build_progress("{$servername}: {restore_database} {to} {$wordpressDB} {failed}..", 42);
            sleep(3);
            return false;
        }
    }
    build_progress("{$servername}: {restore_database} {to} {$wordpressDB}..{done}", 42);
    @unlink($TMP_FILE);
    if (!scan($WORKING_DIRECTORY)) {
        build_progress("{$servername}: {install} {failed}", 42);
        sleep(3);
        return false;
    }
    $proto = "http";
    if ($free->useSSL == 1) {
        $proto = "https";
    }
    $sql = "UPDATE `wp_options` SET `option_value`='{$proto}://{$servername}' WHERE `option_name`='siteurl'";
    $q->QUERY_SQL($sql, $wordpressDB);
    if (!$q->ok) {
        echo $q->mysql_error;
        build_progress("{$servername}: {install} {failed}", 42);
        sleep(3);
        return false;
    }
    $sql = "UPDATE `wp_options` SET `option_value`='{$proto}://{$servername}' WHERE `option_name`='home'";
    $q->QUERY_SQL($sql, $wordpressDB);
    if (!$q->ok) {
        echo $q->mysql_error;
        build_progress("{$servername}: {install} {failed}", 42);
        sleep(3);
        return false;
    }
    $free->groupware_duplicate = null;
    $free->CreateSite(true);
    return true;
}
Ejemplo n.º 2
0
function ExportSingleWebsite($servername)
{
    $GLOBALS["PROGRESS_FILE"] = "/usr/share/artica-postfix/ressources/logs/wordpress.export.{$servername}.progress";
    $unix = new unix();
    $DBADD = false;
    $mysqldump = $unix->find_program("mysqldump");
    $q = new mysql();
    $free = new freeweb($servername);
    $gzip = $unix->find_program("gzip");
    $tar = $unix->find_program("tar");
    $rm = $unix->find_program("rm");
    $database = $free->mysql_database;
    if ($database == null) {
        $database = $free->CreateDatabaseName();
        $DBADD = true;
    }
    build_progress("{$servername}: Backup database {$database}", 20);
    if (!$q->DATABASE_EXISTS($database)) {
        build_progress("Backup {$servername}: database {$database} Failed ( No such database )", 110);
        return false;
    }
    if ($DBADD) {
        $free->mysql_database = $database;
        $free->CreateSite(true);
        $free = new freeweb($servername);
    }
    $TMP_PATH = $unix->TEMP_DIR();
    $BaseWorkDir = "{$TMP_PATH}/{$servername}";
    @mkdir("{$BaseWorkDir}", 0755, true);
    $q = new mysql();
    $ligneDump = @mysql_fetch_array($q->QUERY_SQL("SELECT * from freeweb WHERE servername='{$servername}'", "artica_backup"));
    while (list($index, $data) = each($ligneDump)) {
        if (is_numeric($index)) {
            continue;
        }
        echo "Dumping {$index} = {$data}\n";
        $TODUMP[$index] = $data;
    }
    if (count($TODUMP) == 0) {
        build_progress("Dumping parameters failed", 110);
        return;
    }
    @file_put_contents("{$BaseWorkDir}/config.serialize", base64_encode(serialize($TODUMP)));
    $TODUMP = unserialize(base64_decode(@file_get_contents("{$BaseWorkDir}/config.serialize")));
    if (count($TODUMP) == 0) {
        build_progress("Dumping parameters failed", 110);
        return;
    }
    build_progress("Dumping parameters {$BaseWorkDir}/config.serialize success", 22);
    $nice = $unix->EXEC_NICE();
    $q = new mysql();
    if ($q->mysql_password != null) {
        $password = "******" . $unix->shellEscapeChars($q->mysql_password);
    }
    $t = time();
    $prefix = trim("{$nice} {$mysqldump} --add-drop-table --single-transaction --force --insert-ignore -S /var/run/mysqld/mysqld.sock -u {$q->mysql_admin}{$password} {$database}");
    $cmdline = "{$prefix} | {$gzip} > {$BaseWorkDir}/database.gz";
    shell_exec($cmdline);
    $took = $unix->distanceOfTimeInWords($t, time());
    $size = FormatBytes(@filesize("{$BaseWorkDir}/database.gz") / 1024);
    build_progress("Backup database {$database} {$size}", 25);
    $WORKDIR = $free->www_dir;
    build_progress("Backup directory {$WORKDIR}", 25);
    echo "Backup directory {$WORKDIR}";
    if (!is_dir($WORKDIR)) {
        build_progress("Backup directory {$WORKDIR} Failed ( No such directory )", 110);
        return false;
    }
    chdir($WORKDIR);
    system("{$nice} {$tar} cfz {$BaseWorkDir}/wordpress.tar.gz *");
    $took = $unix->distanceOfTimeInWords($t, time());
    $size = FormatBytes(@filesize("{$BaseWorkDir}/wordpress.tar.gz") / 1024);
    build_progress("Backup directory {$WORKDIR} {$size}", 50);
    sleep(4);
    build_progress("Creating container...", 50);
    chdir($BaseWorkDir);
    @mkdir("/home/artica/wordress-exported", 0755, true);
    if (is_file("/home/artica/wordress-exported/{$servername}.tar.gz")) {
        @unlink("/home/artica/wordress-exported/{$servername}.tar.gz");
    }
    system("{$nice} {$tar} cvfz /home/artica/wordress-exported/{$servername}.tar.gz *");
    sleep(4);
    build_progress("Cleaning...", 95);
    chdir("/root");
    shell_exec("{$rm} -rf {$BaseWorkDir}");
    build_progress("Creating container done...", 100);
}