mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2024-11-22 01:25:28 +03:00
refactor: frontpage and proxy setting (#4214)
This commit is contained in:
parent
e9d3a657ba
commit
c0e37bcf35
5 changed files with 26 additions and 17 deletions
|
@ -51,6 +51,7 @@ class DisplayAction implements ActionInterface
|
||||||
return new Response(render(__DIR__ . '/../templates/error.html.php', ['message' => 'This bridge is not whitelisted']), 400);
|
return new Response(render(__DIR__ . '/../templates/error.html.php', ['message' => 'This bridge is not whitelisted']), 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable proxy (if enabled and per user's request)
|
||||||
if (
|
if (
|
||||||
Configuration::getConfig('proxy', 'url')
|
Configuration::getConfig('proxy', 'url')
|
||||||
&& Configuration::getConfig('proxy', 'by_bridge')
|
&& Configuration::getConfig('proxy', 'by_bridge')
|
||||||
|
|
|
@ -4,6 +4,8 @@ final class FrontpageAction implements ActionInterface
|
||||||
{
|
{
|
||||||
public function __invoke(Request $request): Response
|
public function __invoke(Request $request): Response
|
||||||
{
|
{
|
||||||
|
$token = $request->attribute('token');
|
||||||
|
|
||||||
$messages = [];
|
$messages = [];
|
||||||
$activeBridges = 0;
|
$activeBridges = 0;
|
||||||
|
|
||||||
|
@ -20,13 +22,12 @@ final class FrontpageAction implements ActionInterface
|
||||||
$body = '';
|
$body = '';
|
||||||
foreach ($bridgeClassNames as $bridgeClassName) {
|
foreach ($bridgeClassNames as $bridgeClassName) {
|
||||||
if ($bridgeFactory->isEnabled($bridgeClassName)) {
|
if ($bridgeFactory->isEnabled($bridgeClassName)) {
|
||||||
$body .= BridgeCard::render($bridgeClassName, $request);
|
$body .= BridgeCard::render($bridgeClassName, $token);
|
||||||
$activeBridges++;
|
$activeBridges++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: cache this renderered template?
|
$response = new Response(render(__DIR__ . '/../templates/frontpage.html.php', [
|
||||||
return new Response(render(__DIR__ . '/../templates/frontpage.html.php', [
|
|
||||||
'messages' => $messages,
|
'messages' => $messages,
|
||||||
'admin_email' => Configuration::getConfig('admin', 'email'),
|
'admin_email' => Configuration::getConfig('admin', 'email'),
|
||||||
'admin_telegram' => Configuration::getConfig('admin', 'telegram'),
|
'admin_telegram' => Configuration::getConfig('admin', 'telegram'),
|
||||||
|
@ -34,5 +35,8 @@ final class FrontpageAction implements ActionInterface
|
||||||
'active_bridges' => $activeBridges,
|
'active_bridges' => $activeBridges,
|
||||||
'total_bridges' => count($bridgeClassNames),
|
'total_bridges' => count($bridgeClassNames),
|
||||||
]));
|
]));
|
||||||
|
|
||||||
|
// TODO: The rendered template could be cached, but beware config changes that changes the html
|
||||||
|
return $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,8 +86,8 @@ telegram = ""
|
||||||
donations = true
|
donations = true
|
||||||
|
|
||||||
[proxy]
|
[proxy]
|
||||||
|
; The HTTP proxy to tunnel requests through
|
||||||
; Sets the proxy url (i.e. "tcp://192.168.0.0:32")
|
; https://curl.se/libcurl/c/CURLOPT_PROXY.html
|
||||||
; "" = Proxy disabled (default)
|
; "" = Proxy disabled (default)
|
||||||
url = ""
|
url = ""
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
final class BridgeCard
|
final class BridgeCard
|
||||||
{
|
{
|
||||||
public static function render(string $bridgeClassName, Request $request): string
|
public static function render(string $bridgeClassName, ?string $token): string
|
||||||
{
|
{
|
||||||
$bridgeFactory = new BridgeFactory();
|
$bridgeFactory = new BridgeFactory();
|
||||||
|
|
||||||
|
@ -14,10 +14,15 @@ final class BridgeCard
|
||||||
$description = $bridge->getDescription();
|
$description = $bridge->getDescription();
|
||||||
$contexts = $bridge->getParameters();
|
$contexts = $bridge->getParameters();
|
||||||
|
|
||||||
if (Configuration::getConfig('proxy', 'url') && Configuration::getConfig('proxy', 'by_bridge')) {
|
// Checkbox for disabling of proxy (if enabled)
|
||||||
|
if (
|
||||||
|
Configuration::getConfig('proxy', 'url')
|
||||||
|
&& Configuration::getConfig('proxy', 'by_bridge')
|
||||||
|
) {
|
||||||
|
$proxyName = Configuration::getConfig('proxy', 'name') ?: Configuration::getConfig('proxy', 'url');
|
||||||
$contexts['global']['_noproxy'] = [
|
$contexts['global']['_noproxy'] = [
|
||||||
'name' => 'Disable proxy (' . (Configuration::getConfig('proxy', 'name') ?: Configuration::getConfig('proxy', 'url')) . ')',
|
'name' => sprintf('Disable proxy (%s)', $proxyName),
|
||||||
'type' => 'checkbox'
|
'type' => 'checkbox',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +52,6 @@ final class BridgeCard
|
||||||
|
|
||||||
CARD;
|
CARD;
|
||||||
|
|
||||||
$token = $request->attribute('token');
|
|
||||||
|
|
||||||
if (count($contexts) === 0) {
|
if (count($contexts) === 0) {
|
||||||
// The bridge has zero parameters
|
// The bridge has zero parameters
|
||||||
$card .= self::renderForm($bridgeClassName, '', [], $token);
|
$card .= self::renderForm($bridgeClassName, '', [], $token);
|
||||||
|
|
|
@ -113,6 +113,7 @@ final class CurlHttpClient implements HttpClient
|
||||||
if ($config['proxy']) {
|
if ($config['proxy']) {
|
||||||
curl_setopt($ch, CURLOPT_PROXY, $config['proxy']);
|
curl_setopt($ch, CURLOPT_PROXY, $config['proxy']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curl_setopt_array($ch, $config['curl_options']) === false) {
|
if (curl_setopt_array($ch, $config['curl_options']) === false) {
|
||||||
throw new \Exception('Tried to set an illegal curl option');
|
throw new \Exception('Tried to set an illegal curl option');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue