added wikiless frontend, frontends can now be preset by the host, wikipedia images are converted to base64 now

This commit is contained in:
hnhx 2022-04-21 11:02:32 +02:00
parent ae23a9cdde
commit e64e9a79db
8 changed files with 68 additions and 39 deletions

View File

@ -10,6 +10,16 @@
"disable_bittorent_search" => false,
"bittorent_trackers" => "&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce",
/*
Preset privacy friendly frontends for users, these can be overwritten by users in settings
e.g.: "invidious" => "https://yewtu.be",
*/
"invidious" => "",
"bibliogram" => "",
"nitter" => "",
"libreddit" => "",
"wikiless" => "",
/*
To send requests trough a proxy uncomment CURLOPT_PROXY and CURLOPT_PROXYTYPE:
@ -28,7 +38,7 @@
// CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36",
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYHOST => false,

View File

@ -110,7 +110,7 @@
$url = $url->textContent;
$url = privacy_friendly_alternative($url);
$url = check_for_privacy_frontend($url);
$title = $xpath->evaluate(".//h3", $result)[0];
$description = $xpath->evaluate(".//div[contains(@class, 'VwiC3b')]", $result)[0];
@ -142,7 +142,7 @@
echo "<p class=\"special-result-container\">";
if (array_key_exists("image", $special["special_response"]))
echo "<img src=\"" . $special["special_response"]["image"] . "\">";
echo "<img src=\"data:image/jpeg;base64," . $special["special_response"]["image"] . "\">";
echo $response;
echo "<a href=\"$source\" target=\"_blank\">$source</a>";
echo "</p>";

View File

@ -22,7 +22,7 @@
$url = $url->textContent;
$url = privacy_friendly_alternative($url);
$url = check_for_privacy_frontend($url);
$title = $xpath->evaluate(".//h3", $result)[0];

View File

@ -11,7 +11,7 @@
{
$description = substr($first_page["extract"], 0, 250) . "...";
$source = "https://en.wikipedia.org/wiki/$query";
$source = check_for_privacy_frontend("https://wikipedia.org/wiki/$query");
$response = array(
"special_response" => array(
"response" => $description,
@ -20,7 +20,12 @@
);
if (array_key_exists("thumbnail", $first_page))
$response["special_response"]["image"] = $first_page["thumbnail"]["source"];
{
$img_url = $first_page["thumbnail"]["source"];
$img_src = request($img_url);
$base64_src = base64_encode($img_src);
$response["special_response"]["image"] = $base64_src;
}
return $response;
}

View File

@ -1,10 +1,9 @@
<div class="footer-container">
<a href="/">LibreX</a>
<a href="./">LibreX</a>
<a href="https://github.com/hnhx/librex/" target="_blank">Source &amp; Instance list</a>
<a href="/settings.php">Settings</a>
<a href="https://based-or-botnet.neocities.org/" target="_blank">Privacy guides</a>
<a href="/api.php" target="_blank">API</a>
<a href="/donate.php">Donate ❤️</a>
<a href="./settings.php">Settings</a>
<a href="./api.php" target="_blank">API</a>
<a href="./donate.php">Donate ❤️</a>
</div>
</body>
</html>

View File

@ -6,11 +6,18 @@
return $base_url;
}
function check_for_privacy_friendly_alternative($url, $frontend, $tobereplaced)
function try_replace_with_frontend($url, $frontend, $tobereplaced)
{
if (isset($_COOKIE[$frontend]) || isset($_REQUEST[$frontend]))
$config = require "config.php";
if (isset($_COOKIE[$frontend]) || isset($_REQUEST[$frontend]) || !empty($config->$frontend))
{
$frontend = isset($_COOKIE[$frontend]) ? $_COOKIE[$frontend] : $_REQUEST[$frontend];
if (isset($_COOKIE[$frontend]))
$frontend = $_COOKIE[$frontend];
else if (isset($_REQUEST[$frontend]))
$frontend = $_REQUEST[$frontend];
else if (!empty($config->$frontend))
$frontend = $config->$frontend;
if ($tobereplaced == "instagram.com")
{
@ -26,16 +33,18 @@
return $url;
}
function privacy_friendly_alternative($url)
function check_for_privacy_frontend($url)
{
if (strpos($url, "youtube.com"))
$url = check_for_privacy_friendly_alternative($url, "invidious", "youtube.com");
$url = try_replace_with_frontend($url, "invidious", "youtube.com");
else if (strpos($url, "instagram.com"))
$url = check_for_privacy_friendly_alternative($url, "bibliogram", "instagram.com");
$url = try_replace_with_frontend($url, "bibliogram", "instagram.com");
else if (strpos($url, "twitter.com"))
$url = check_for_privacy_friendly_alternative($url, "nitter", "twitter.com");
$url = try_replace_with_frontend($url, "nitter", "twitter.com");
else if (strpos($url, "reddit.com"))
$url = check_for_privacy_friendly_alternative($url, "libreddit", "reddit.com");
$url = try_replace_with_frontend($url, "libreddit", "reddit.com");
else if (strpos($url, "wikipedia.org"))
$url = try_replace_with_frontend($url, "wikiless", "wikipedia.org");
return $url;
}

View File

@ -4,14 +4,15 @@
</head>
<body>
<form class="sub-search-container" method="post" enctype="multipart/form-data" autocomplete="off">
<a href="/"><img id="logo" src="static/images/librex.png" alt="librex"></a>
<a href="./"><img id="logo" src="static/images/librex.png" alt="librex"></a>
<input type="text" name="q"
<?php
$query = trim($_REQUEST["q"]);
$query_encoded = urlencode($query);
if (1 > strlen($query) || strlen($query) > 256)
{
header("Location: /");
header("Location: ./");
die();
}
@ -31,7 +32,6 @@
<button name="type" value="2"><img src="static/images/video_result.png">Videos</button>
<button name="type" value="3"><img src="static/images/torrent_result.png">Torrents</button>
</div>
<hr>
</form>
@ -41,8 +41,6 @@
$page = isset($_REQUEST["p"]) ? (int) $_REQUEST["p"] : 0;
$query_encoded = urlencode($query);
$start_time = microtime(true);
switch ($type)
{

View File

@ -1,6 +1,7 @@
<?php
<?php
require "misc/header.php";
$config = require "config.php";
function better_setcookie($name)
{
@ -20,8 +21,9 @@
better_setcookie("bibliogram");
better_setcookie("nitter");
better_setcookie("libreddit");
better_setcookie("wikiless");
header("Location: /settings.php");
header("Location: ./settings.php");
die();
}
else if (isset($_REQUEST["reset"]))
@ -34,7 +36,7 @@
setcookie($name, "", time() - 1000);
}
header("Location: /settings.php");
header("Location: ./settings.php");
die();
}
}
@ -75,33 +77,39 @@
</div>
<h2>Privacy friendly frontends</h2>
<p>For an example if you want to view YouTube without getting spied on, click on "Invidious", find the instance that is most suitable for you then paste it in (correct format: https://example.com)</p>
<div class="instances-container">
<div class="instances-container">
<div>
<a for="invidious" href="https://docs.invidious.io/Invidious-Instances/" target="_blank">Invidious</a>
<input pattern="https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" type="text" name="invidious" placeholder="Replace YouTube" value=
<?php echo isset($_COOKIE["invidious"]) ? $_COOKIE["invidious"] : "\"\""; ?>
<a for="invidious" href="https://docs.invidious.io/instances/" target="_blank">Invidious</a>
<input type="text" name="invidious" placeholder="Replace YouTube" value=
<?php echo isset($_COOKIE["invidious"]) ? $_COOKIE["invidious"] : "\"$config->invidious\""; ?>
>
</div>
<div>
<a for="bibliogram" href="https://git.sr.ht/~cadence/bibliogram-docs/tree/master/docs/Instances.md" target="_blank">Bibliogram</a>
<input pattern="https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" type="text" name="bibliogram" placeholder="Replace Instagram" value=
<?php echo isset($_COOKIE["bibliogram"]) ? $_COOKIE["bibliogram"] : "\"\""; ?>
<input type="text" name="bibliogram" placeholder="Replace Instagram" value=
<?php echo isset($_COOKIE["bibliogram"]) ? $_COOKIE["bibliogram"] : "\"$config->bibliogram\""; ?>
>
</div>
<div>
<a for="nitter" href="https://github.com/zedeus/nitter/wiki/Instances" target="_blank">Nitter</a>
<input pattern="https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" type="text" name="nitter" placeholder="Replace Twitter" value=
<?php echo isset($_COOKIE["nitter"]) ? $_COOKIE["nitter"] : "\"\""; ?>
<input type="text" name="nitter" placeholder="Replace Twitter" value=
<?php echo isset($_COOKIE["nitter"]) ? $_COOKIE["nitter"] : "\"$config->nitter\""; ?>
>
</div>
<div>
<a for="libreddit" href="https://github.com/spikecodes/libreddit" target="_blank">Libreddit</a>
<input pattern="https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" type="text" name="libreddit" placeholder="Replace Reddit" value=
<?php echo isset($_COOKIE["libreddit"]) ? $_COOKIE["libreddit"] : "\"\""; ?>
<input type="text" name="libreddit" placeholder="Replace Reddit" value=
<?php echo isset($_COOKIE["libreddit"]) ? $_COOKIE["libreddit"] : "\"$config->libreddit\""; ?>
>
</div>
<div>
<a for="wikiless" href="https://codeberg.org/orenom/wikiless" target="_blank">Wikiless</a>
<input type="text" name="wikiless" placeholder="Replace Wikipedia" value=
<?php echo isset($_COOKIE["wikiless"]) ? $_COOKIE["wikiless"] : "\"$config->wikiless\""; ?>
>
</div>
</div>
@ -129,4 +137,4 @@
</form>
</div>
<?php require "misc/footer.php"; ?>
<?php require "misc/footer.php"; ?>