Merge pull request #3080 from annando/1701-curl-range
Download limit for fetching data via "z_fetch_url"
This commit is contained in:
commit
b1120f5238
5 changed files with 127 additions and 121 deletions
|
@ -25,6 +25,7 @@ Example: To set the directory value please add this line to your .htconfig.php:
|
|||
* **allowed_link_protocols** (Array) - Allowed protocols in links URLs, add at your own risk. http is always allowed.
|
||||
* **birthday_input_format** - Default value is "ymd".
|
||||
* **block_local_dir** (Boolean) - Blocks the access to the directory of the local users.
|
||||
* **curl_range_bytes** - Maximum number of bytes that should be fetched. Default is 0, which mean "no limit".
|
||||
* **dbclean** (Boolean) - Enable the automatic database cleanup process
|
||||
* **default_service_class** -
|
||||
* **delivery_batch_count** - Number of deliveries per process. Default value is 1. (Disabled when using the worker)
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
* @file include/network.php
|
||||
*/
|
||||
|
||||
use \Friendica\Core\Config;
|
||||
|
||||
require_once("include/xml.php");
|
||||
require_once('include/Probe.php');
|
||||
|
||||
|
@ -93,7 +95,10 @@ function z_fetch_url($url,$binary = false, &$redirects = 0, $opts=array()) {
|
|||
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
|
||||
@curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
|
||||
|
||||
|
||||
$range = intval(Config::get('system', 'curl_range_bytes', 0));
|
||||
if ($range > 0) {
|
||||
@curl_setopt($ch, CURLOPT_RANGE, '0-'.$range);
|
||||
}
|
||||
|
||||
if(x($opts,'headers')){
|
||||
@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
<?php
|
||||
|
||||
|
||||
function oexchange_init(App $a) {
|
||||
|
||||
if(($a->argc > 1) && ($a->argv[1] === 'xrd')) {
|
||||
if (($a->argc > 1) && ($a->argv[1] === 'xrd')) {
|
||||
$tpl = get_markup_template('oexchange_xrd.tpl');
|
||||
|
||||
$o = replace_macros($tpl, array('$base' => App::get_baseurl()));
|
||||
echo $o;
|
||||
killme();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function oexchange_content(App $a) {
|
||||
|
@ -37,8 +33,9 @@ function oexchange_content(App $a) {
|
|||
|
||||
$s = fetch_url(App::get_baseurl() . '/parse_url?f=&url=' . $url . $title . $description . $tags);
|
||||
|
||||
if(! strlen($s))
|
||||
if (! strlen($s)) {
|
||||
return;
|
||||
}
|
||||
|
||||
require_once('include/html2bbcode.php');
|
||||
|
||||
|
@ -52,7 +49,4 @@ function oexchange_content(App $a) {
|
|||
$_REQUEST = $post;
|
||||
require_once('mod/item.php');
|
||||
item_post($a);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,8 +16,14 @@ function uexport_content(App $a) {
|
|||
header("Content-type: application/json");
|
||||
header('Content-Disposition: attachment; filename="'.$a->user['nickname'].'.'.$a->argv[1].'"');
|
||||
switch($a->argv[1]) {
|
||||
case "backup": uexport_all($a); killme(); break;
|
||||
case "account": uexport_account($a); killme(); break;
|
||||
case "backup":
|
||||
uexport_all($a);
|
||||
killme();
|
||||
break;
|
||||
case "account":
|
||||
uexport_account($a);
|
||||
killme();
|
||||
break;
|
||||
default:
|
||||
killme();
|
||||
}
|
||||
|
@ -39,19 +45,17 @@ function uexport_content(App $a) {
|
|||
'$title' => t('Export personal data'),
|
||||
'$options' => $options
|
||||
));
|
||||
|
||||
|
||||
}
|
||||
|
||||
function _uexport_multirow($query) {
|
||||
$result = array();
|
||||
$r = q($query);
|
||||
// if (dbm::is_result($r)) {
|
||||
if ($r){
|
||||
if (dbm::is_result($r)) {
|
||||
foreach($r as $rr){
|
||||
$p = array();
|
||||
foreach($rr as $k => $v)
|
||||
foreach($rr as $k => $v) {
|
||||
$p[$k] = $v;
|
||||
}
|
||||
$result[] = $p;
|
||||
}
|
||||
}
|
||||
|
@ -61,11 +65,12 @@ function _uexport_multirow($query) {
|
|||
function _uexport_row($query) {
|
||||
$result = array();
|
||||
$r = q($query);
|
||||
if ($r) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
if (dbm::is_result($r)) {
|
||||
foreach($r as $rr) {
|
||||
foreach($rr as $k => $v) {
|
||||
$result[$k] = $v;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
@ -89,7 +94,9 @@ function uexport_account($a){
|
|||
$photo = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user()) )
|
||||
);
|
||||
foreach ($photo as &$p) $p['data'] = bin2hex($p['data']);
|
||||
foreach ($photo as &$p) {
|
||||
$p['data'] = bin2hex($p['data']);
|
||||
}
|
||||
|
||||
$pconfig = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `pconfig` WHERE uid = %d",intval(local_user()) )
|
||||
|
@ -118,7 +125,6 @@ function uexport_account($a){
|
|||
|
||||
//echo "<pre>"; var_dump(json_encode($output)); killme();
|
||||
echo json_encode($output);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -132,12 +138,12 @@ function uexport_all(App $a) {
|
|||
$r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
);
|
||||
if (dbm::is_result($r))
|
||||
if (dbm::is_result($r)) {
|
||||
$total = $r[0]['total'];
|
||||
|
||||
}
|
||||
// chunk the output to avoid exhausting memory
|
||||
|
||||
for($x = 0; $x < $total; $x += 500) {
|
||||
for ($x = 0; $x < $total; $x += 500) {
|
||||
$item = array();
|
||||
$r = q("SELECT * FROM `item` WHERE `uid` = %d LIMIT %d, %d",
|
||||
intval(local_user()),
|
||||
|
@ -153,5 +159,4 @@ function uexport_all(App $a) {
|
|||
$output = array('item' => $r);
|
||||
echo json_encode($output)."\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ function uimport_post(App $a) {
|
|||
|
||||
default:
|
||||
case REGISTER_CLOSED:
|
||||
if((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) {
|
||||
if ((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) {
|
||||
notice( t('Permission denied.') . EOL );
|
||||
return;
|
||||
}
|
||||
|
@ -38,15 +38,15 @@ function uimport_post(App $a) {
|
|||
|
||||
function uimport_content(App $a) {
|
||||
|
||||
if((! local_user()) && ($a->config['register_policy'] == REGISTER_CLOSED)) {
|
||||
if ((! local_user()) && ($a->config['register_policy'] == REGISTER_CLOSED)) {
|
||||
notice("Permission denied." . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$max_dailies = intval(get_config('system','max_daily_registrations'));
|
||||
if($max_dailies) {
|
||||
if ($max_dailies) {
|
||||
$r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day");
|
||||
if($r && $r[0]['total'] >= $max_dailies) {
|
||||
if ($r && $r[0]['total'] >= $max_dailies) {
|
||||
logger('max daily registrations exceeded.');
|
||||
notice( t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL);
|
||||
return;
|
||||
|
@ -54,11 +54,12 @@ function uimport_content(App $a) {
|
|||
}
|
||||
|
||||
|
||||
if(x($_SESSION,'theme'))
|
||||
if (x($_SESSION,'theme')) {
|
||||
unset($_SESSION['theme']);
|
||||
if(x($_SESSION,'mobile-theme'))
|
||||
}
|
||||
if (x($_SESSION,'mobile-theme')) {
|
||||
unset($_SESSION['mobile-theme']);
|
||||
|
||||
}
|
||||
|
||||
$tpl = get_markup_template("uimport.tpl");
|
||||
return replace_macros($tpl, array(
|
||||
|
|
Loading…
Reference in a new issue