| Server IP : 104.21.84.107 / Your IP : 104.23.197.208 Web Server : Apache/2.4.63 (Ubuntu) System : Linux adminpruebas-Virtual-Machine 6.14.0-37-generic #37-Ubuntu SMP PREEMPT_DYNAMIC Fri Nov 14 22:10:32 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.4.5 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/pregrados/medicina-veterinaria-zootecnia/libraries/regularlabs/src/ |
Upload File : |
<?php
/**
* @package Regular Labs Library
* @version 23.12.10783
*
* @author Peter van Westen <[email protected]>
* @link https://regularlabs.com
* @copyright Copyright © 2023 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
namespace RegularLabs\Library;
defined('_JEXEC') or die;
use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Http\HttpFactory as JHttpFactory;
use Joomla\Registry\Registry;
use RuntimeException;
/**
* Class Http
*
* @package RegularLabs\Library
*/
class Http
{
/**
* Get the contents of the given internal url
*/
public static function get(string $url, int $timeout = 20, string $default = ''): string
{
if (Uri::isExternal($url))
{
return $default;
}
return @file_get_contents($url, false, stream_context_create(['http' => ['timeout' => $timeout]]))
|| self::getFromUrl($url, $timeout, $default);
}
/**
* Get the contents of the given external url from the Regular Labs server
*/
public static function getFromServer(
string $url,
int $timeout = 20,
string $default = ''
): string
{
$cache = new Cache;
$cache_ttl = Input::getInt('cache', 0);
if ($cache_ttl)
{
$cache->useFiles($cache_ttl > 1 ? $cache_ttl : null);
}
if ($cache->exists())
{
return $cache->get();
}
// only allow url calls from administrator
if ( ! Document::isClient('administrator'))
{
die;
}
// only allow when logged in
$user = JFactory::getApplication()->getIdentity() ?: JFactory::getUser();
if ( ! $user->id)
{
die;
}
if ( ! str_starts_with($url, 'http'))
{
$url = 'http://' . $url;
}
// only allow url calls to regularlabs.com domain
if ( ! (RegEx::match('^https?://([^/]+\.)?regularlabs\.com/', $url)))
{
die;
}
// only allow url calls to certain files
if (
! str_contains($url, 'download.regularlabs.com/extensions.php')
&& ! str_contains($url, 'download.regularlabs.com/extensions.json')
&& ! str_contains($url, 'download.regularlabs.com/extensions.xml')
&& ! str_contains($url, 'download.regularlabs.com/check_key.php')
)
{
die;
}
$content = self::getContents($url, $timeout);
$format = (str_contains($url, '.json') || str_contains($url, 'format=json'))
? 'application/json'
: 'text/xml';
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-type: " . $format);
if (empty($content))
{
return $default;
}
return $cache->set($content ?: $default);
}
/**
* Get the contents of the given url
*/
public static function getFromUrl(string $url, int $timeout = 20, string $default = ''): string
{
$cache = new Cache;
$cache_ttl = Input::getInt('cache', 0);
if ($cache_ttl)
{
$cache->useFiles($cache_ttl > 1 ? $cache_ttl : null);
}
if ($cache->exists())
{
return $cache->get();
}
$content = self::getContents($url, $timeout);
if (empty($content))
{
return $default;
}
return $cache->set($content ?: $default);
}
/**
* Load the contents of the given url
*/
private static function getContents(
string $url,
int $timeout = 20,
string $default = ''
): string
{
try
{
// Adding a valid user agent string, otherwise some feed-servers returning an error
$options = new Registry([
'userAgent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
]);
$response = JHttpFactory::getHttp($options)->get($url, [], $timeout);
$content = $response->body ?? $default;
}
catch (RuntimeException $e)
{
return $default;
}
// Remove prefix and postfix stuff added by SocketTransport
$content = preg_replace('#^\s*1c\s*(\{.*\})\s*0\s*$#s', '$1', $content);
return $content;
}
}