Exemple #1
0
        $settings_filename = make_settings_filename($token);
    } else {
        if ($web_initiated === false) {
            if (!$settings_filename || !$output_dirname) {
                FUPSBase::exit_err_s('Fatal error: no ' . (!$settings_filename ? 'settings' : 'output') . ' filename specified in commandline arguments.', __FILE__, __METHOD__, __LINE__);
            }
        } else {
            FUPSBase::exit_err_s('Fatal error: $web_initiated is uninitialised after parsing commandline arguments (this error should never occur, and indicates a bug).', __FILE__, __METHOD__, __LINE__);
        }
    }
}
$forum_type = FUPSBase::read_forum_type_from_settings_file_s($settings_filename);
$valid_forum_types = FUPSBase::get_valid_forum_types();
if (!isset($valid_forum_types[$forum_type])) {
    FUPSBase::exit_err_s('Fatal error: missing or invalid forum_type in settings file "' . $settings_filename . '": "' . $forum_type . '".', __FILE__, __METHOD__, __LINE__);
}
$forum_type_caps = $valid_forum_types[$forum_type];
require_once __DIR__ . '/classes/C' . $forum_type_caps . '.php';
if ($chained) {
    $token_or_settings_filename = $web_initiated ? $token : $settings_filename;
    $FUPS = unserialize(file_get_contents(make_serialize_filename($token_or_settings_filename)));
} else {
    if ($web_initiated) {
        $params = array('token' => $token);
    } else {
        $params = array('settings_filename' => $settings_filename, 'output_dirname' => $output_dirname, 'quiet' => $quiet);
    }
    $class = $forum_type_caps . 'FUPS';
    $FUPS = new $class($web_initiated, $params);
}
$FUPS->run();
Exemple #2
0
 protected function check_do_chain()
 {
     if (time() - $this->start_time > $this->FUPS_CHAIN_DURATION) {
         $serialize_filename = make_serialize_filename($this->web_initiated ? $this->token : $this->settings_filename);
         if ($this->dbg) {
             $this->write_err('Set $serialize_filename to "' . $serialize_filename . '".');
         }
         if (!file_put_contents($serialize_filename, serialize($this))) {
             $this->exit_err('file_put_contents returned false.', __FILE__, __METHOD__, __LINE__);
         }
         $args = array('chained' => true);
         if ($this->web_initiated) {
             $args['token'] = $this->token;
         } else {
             $args['settings_filename'] = $this->settings_filename;
             $args['output_dirname'] = $this->output_dirname;
             $args['quiet'] = $this->quiet;
         }
         curl_close($this->ch);
         // So we save the cookie file to disk for the chained process.
         $cmd = make_php_exec_cmd($args);
         $this->write_status('Chaining next process.');
         if ($this->dbg) {
             $this->write_err('Chaining process: about to run command: ' . $cmd);
         }
         if (!try_run_bg_proc($cmd)) {
             $this->exit_err('Apologies, the server encountered a technical error: it was unable to initiate a chained background process to continue the task of scraping, sorting and finally presenting your posts. The command used was:' . PHP_EOL . PHP_EOL . $cmd . PHP_EOL . PHP_EOL . 'Any output was:' . PHP_EOL . implode(PHP_EOL, $output) . PHP_EOL . PHP_EOL . 'You might like to try again.', __FILE__, __METHOD__, __LINE__);
         }
         if ($this->dbg) {
             $this->write_err('Exiting parent chaining process.');
         }
         exit;
     }
 }
Exemple #3
0
     $fp = @fopen($settings_filename, "x");
     if ($fp !== false) {
         break;
     }
 }
 if ($fp === false) {
     $err = 'Apologies, the server encountered a technical error: it was unable to generate a unique token to be associated with your request after ' . FUPS_MAX_TOKEN_ATTEMPTS . ' attempts. You might like to try again or <a href="' . FUPS_CONTACT_URL . '">contact me</a> about this error.';
 } else {
     foreach (array_keys($_POST) as $setting) {
         $value = $_POST[$setting];
         fwrite($fp, $setting . '=' . $value . PHP_EOL);
     }
     fclose($fp);
     $status_filename = make_status_filename($token);
     $errs_filename = make_errs_filename($token);
     $serialize_filename = make_serialize_filename($token);
     if (file_put_contents($status_filename, 'Starting up.') === false) {
         if ($file_errs) {
             $file_errs .= ' ';
         }
         $file_errs .= 'Error: unable to write to the status file.';
     }
     if (file_put_contents($errs_filename, '') === false) {
         if ($file_errs) {
             $file_errs .= ' ';
         }
         $file_errs .= 'Error: unable to write to the error file.';
     }
     if (file_put_contents($serialize_filename, '') === false) {
         if ($file_errs) {
             $file_errs .= ' ';
Exemple #4
0
        if (is_array($output_info)) {
            $output_dir = null;
            foreach ($output_info as $opv) {
                try_delete_file($opv['filepath'], '"' . $opv['filepath'] . '"', false, $err, $num_files_deleted, false);
                $output_dir = dirname($opv['filepath']);
            }
            @rmdir($output_dir);
        }
    }
    if (validate_token($token, $err)) {
        try_delete_file(make_settings_filename($token), 'settings', true, $err, $num_files_deleted);
        try_delete_file(make_status_filename($token), 'status', false, $err, $num_files_deleted);
        try_delete_file(make_errs_filename($token), 'error', false, $err, $num_files_deleted);
        try_delete_file(make_errs_admin_filename($token), 'errors (admin)', false, $err, $num_files_deleted, false);
        try_delete_file(make_output_info_filename($token), 'output info', false, $err, $num_files_deleted, false);
        try_delete_file(make_serialize_filename($token), 'serialisation', true, $err, $num_files_deleted);
        try_delete_file(make_cookie_filename($token), 'cookie', true, $err, $num_files_deleted, false);
        try_delete_file(make_cancellation_filename($token), 'cancellation', true, $err, $num_files_deleted, false);
    }
}
function try_delete_file($filename, $name, $sensitive, &$err, &$num_files_deleted, $add_err_if_file_not_present = true)
{
    global $fups_url_homepage;
    if (!is_file($filename)) {
        if ($add_err_if_file_not_present) {
            $err .= $err ? ' Another' : 'An';
            $err .= ' error occurred: the ' . $name . ' file does not exist on disk; possibly you have already deleted it or it was never created in the first place.';
        }
    } else {
        if (!unlink($filename)) {
            $err .= $err ? ' Another' : 'An';