/** * This file is a part of MyWebSQL package * * @file: modules/importtbl.php * @author Samnan ur Rehman * @copyright (c) 2008-2012 Samnan ur Rehman * @web http://mywebsql.net * @license http://mywebsql.net/license */ function processRequest(&$db) { $importDone = FALSE; $message = ''; $refresh = '0'; $max_upload_size = min(bytes_value(ini_get('post_max_size')), bytes_value(ini_get('upload_max_filesize'))) / 1024; $max_upload_size_text = $max_upload_size < 1024 ? $max_upload_size . 'KB' : $max_upload_size / 1024 . ' MB'; if (isset($_FILES['impfile'])) { if (v($_FILES['impfile']['tmp_name']) != '' && file_exists($_FILES['impfile']['tmp_name'])) { //$module_id = create_module_id( 'import' ); include BASE_PATH . "/lib/import/import.php"; $type = 'csv'; $imptype = v($_REQUEST['$imptype']); if (in_array($imptype, DataImport::types())) { $type = $imptype; } $importer = DataImport::factory($db, $type); $options = extract_vars($_REQUEST, $importer->options()); $result = $importer->importTable($_FILES['impfile']['tmp_name'], $options); $failed = $importer->getFailedQueries(); $affected = $importer->getRowsAffected(); if (!$result || $affected > 0 || $failed > 0) { $message .= '<div class="message ui-state-default">[ ' . str_replace('{{NUM}}', $affected, __('{{NUM}} record(s) were affected')) . '. ]</div>'; if ($failed > 0) { $message_tmp = $failed > 1 ? str_replace('{{NUM}}', $failed, __('{{NUM}} queries failed to execute')) : __('Error occurred while executing the query'); $message .= '<div class="message ui-state-error">' . $message_tmp . '</div>'; if ($failed == 1) { $message .= '<div class="message ui-state-error">' . htmlspecialchars($importer->getError()) . '</div>'; $message .= '<div class="sql-text ui-state-error">' . htmlspecialchars($importer->getLastQuery()) . '</div>'; } } } else { $message .= '<div class="message ui-state-default">' . __('No queries were executed during import') . '.</div>'; } } else { $message .= '<div class="message ui-state-error">' . __('File upload failed. Please try again') . '.</div>'; } $importDone = TRUE; } if (!$importDone) { $message = '<div class="message ui-state-default">' . str_replace('{{SIZE}}', $max_upload_size_text, __('Maximum upload filesize is {{SIZE}}')); $message .= '<br/>' . str_replace('{{LIST}}', valid_import_files(), __('Supported filetypes / extensions are: ({{LIST}})')) . '</div>'; } else { $refresh = '1'; } include BASE_PATH . '/lib/html.php'; $tables = html::arrayToOptions($db->getTables(), '', true, ''); $replace = array('MESSAGE' => $message, 'MAX_SIZE' => $max_upload_size, 'REFRESH' => $refresh, 'TABLE_LIST' => $tables); echo view('importtbl', $replace); }
public function signaturesProvider() { function make_ruby_command($body, $secret, $algo) { $ruby = <<<'R' BODY='#1' SECRET='#2' ALGO='#3' ruby -e " require 'openssl' body = ENV['BODY'] secret = ENV['SECRET'] digest = OpenSSL::Digest.new(ENV['ALGO']) signature = ENV['ALGO'] + '=' + OpenSSL::HMAC.hexdigest(digest, secret, body) puts 'body=' + body puts 'secret=' + secret puts 'signature=' + signature " R; $ruby = str_replace('#1', $body, $ruby); $ruby = str_replace('#2', $secret, $ruby); $ruby = str_replace('#3', $algo, $ruby); return $ruby; } function extract_vars($output) { $vars = array(); foreach ($output as $line) { $line = explode('=', $line); $key = array_shift($line); $line = implode('=', $line); $vars[$key] = $line; } return $vars; } $test_values = array(array('body1', 'secret1', 'sha256'), array(json_encode(array('key' => 'value')), 'howdy!', 'sha256'), array(bin2hex(openssl_random_pseudo_bytes(128)), bin2hex(openssl_random_pseudo_bytes(32)), 'sha256')); foreach ($test_values as $k => $run) { $body = $run[0]; $secret = $run[1]; $algo = $run[2]; $output = array(); $cmd = make_ruby_command($body, $secret, $algo); exec($cmd, $output); $vars = extract_vars($output); $test_values[$k][2] = $vars['signature']; } return $test_values; }