|
|
@ -12,8 +12,8 @@ require_once 'inc/bootstrap.php'; |
|
|
|
/** |
|
|
|
* Get the md5 hash of the file. |
|
|
|
* |
|
|
|
* @param [type] $config instance configuration. |
|
|
|
* @param [type] $file file to the the md5 of. |
|
|
|
* @param [type] $config Instance configuration. |
|
|
|
* @param [type] $file File to do the md5 of. |
|
|
|
* @return string|false |
|
|
|
*/ |
|
|
|
function md5_hash_of_file($config, $file) |
|
|
@ -38,16 +38,17 @@ function md5_hash_of_file($config, $file) |
|
|
|
/** |
|
|
|
* Strip the markup from the given string |
|
|
|
* |
|
|
|
* @param string $post_body the body of the post. |
|
|
|
* @param string $post_body The body of the post. |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
function strip_markup($post_body) |
|
|
|
{ |
|
|
|
if (mysql_version() >= 50503) { |
|
|
|
return $post_body; // Assume we're using the utf8mb4 charset |
|
|
|
// Assume we're using the utf8mb4 charset. |
|
|
|
return $post_body; |
|
|
|
} else { |
|
|
|
// MySQL's `utf8` charset only supports up to 3-byte symbols |
|
|
|
// Remove anything >= 0x010000 |
|
|
|
// MySQL's `utf8` charset only supports up to 3-byte symbols. |
|
|
|
// Remove anything >= 0x010000. |
|
|
|
|
|
|
|
$chars = preg_split('//u', $post_body, -1, PREG_SPLIT_NO_EMPTY); |
|
|
|
$res = ''; |
|
|
@ -63,6 +64,36 @@ function strip_markup($post_body) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Download the url's target with curl. |
|
|
|
* |
|
|
|
* @param [type] $url |
|
|
|
* @param [type] $timeout |
|
|
|
* @param [type] $fd |
|
|
|
* @return null|string Returns a string on error. |
|
|
|
*/ |
|
|
|
function download_file_into($url, $timeout, $fd) |
|
|
|
{ |
|
|
|
$err = null; |
|
|
|
$curl = curl_init(); |
|
|
|
curl_setopt($curl, CURLOPT_URL, $url); |
|
|
|
curl_setopt($curl, CURLOPT_FAILONERROR, true); |
|
|
|
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); |
|
|
|
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); |
|
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); |
|
|
|
curl_setopt($curl, CURLOPT_USERAGENT, 'Tinyboard'); |
|
|
|
curl_setopt($curl, CURLOPT_FILE, $fd); |
|
|
|
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); |
|
|
|
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); |
|
|
|
|
|
|
|
if (curl_exec($curl) === false) { |
|
|
|
$err = curl_error($curl); |
|
|
|
} |
|
|
|
|
|
|
|
curl_close($curl); |
|
|
|
return $err; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Method handling functions |
|
|
|
*/ |
|
|
@ -740,27 +771,13 @@ function handle_post() |
|
|
|
$post['file_tmp'] = tempnam($config['tmp'], 'url'); |
|
|
|
register_shutdown_function('unlink_tmp_file', $post['file_tmp']); |
|
|
|
|
|
|
|
$fp = fopen($post['file_tmp'], 'w'); |
|
|
|
|
|
|
|
$curl = curl_init(); |
|
|
|
curl_setopt($curl, CURLOPT_URL, $post['file_url']); |
|
|
|
curl_setopt($curl, CURLOPT_FAILONERROR, true); |
|
|
|
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); |
|
|
|
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); |
|
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, $config['upload_by_url_timeout']); |
|
|
|
curl_setopt($curl, CURLOPT_USERAGENT, 'Tinyboard'); |
|
|
|
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); |
|
|
|
curl_setopt($curl, CURLOPT_FILE, $fp); |
|
|
|
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); |
|
|
|
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); |
|
|
|
|
|
|
|
if (curl_exec($curl) === false) { |
|
|
|
error($config['error']['nomove'] . '<br/>Curl says: ' . curl_error($curl)); |
|
|
|
} |
|
|
|
|
|
|
|
curl_close($curl); |
|
|
|
$fd = fopen($post['file_tmp'], 'w'); |
|
|
|
|
|
|
|
fclose($fp); |
|
|
|
$dl_err = download_file_into($post['file_url'], $config['upload_by_url_timeout'], $fd); |
|
|
|
fclose($fd); |
|
|
|
if ($dl_err !== null) { |
|
|
|
error($config['error']['nomove'] . '<br/>Curl says: ' . $dl_err); |
|
|
|
} |
|
|
|
|
|
|
|
$_FILES[$post['file_tmp']] = array( |
|
|
|
'name' => basename($url_without_params), |
|
|
@ -893,7 +910,6 @@ function handle_post() |
|
|
|
in_array($cap, $config['mod']['capcode'][$mod['type']]) |
|
|
|
) |
|
|
|
) { |
|
|
|
|
|
|
|
$post['capcode'] = utf8tohtml($cap); |
|
|
|
$post['name'] = $name; |
|
|
|
} |
|
|
|