Browse Source

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

hnhx 3 năm trước cách đây
mục cha
commit
e64e9a79db
8 tập tin đã thay đổi với 68 bổ sung39 xóa
  1. 11 1
      config.php
  2. 2 2
      engines/google/text.php
  3. 1 1
      engines/google/video.php
  4. 7 2
      engines/special/wikipedia.php
  5. 4 5
      misc/footer.php
  6. 17 8
      misc/tools.php
  7. 3 5
      search.php
  8. 23 15
      settings.php

+ 11 - 1
config.php

@@ -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,

+ 2 - 2
engines/google/text.php

@@ -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>";

+ 1 - 1
engines/google/video.php

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

+ 7 - 2
engines/special/wikipedia.php

@@ -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;
         }

+ 4 - 5
misc/footer.php

@@ -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>

+ 17 - 8
misc/tools.php

@@ -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;
     }

+ 3 - 5
search.php

@@ -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)
             {

+ 23 - 15
settings.php

@@ -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"; ?>