From 1ffb41a09a465c0613768af39dfc6c278f8f7b9d Mon Sep 17 00:00:00 2001 From: acidvegas Date: Sun, 12 Nov 2023 16:08:50 -0500 Subject: [PATCH] Updated to the latest version --- README.md | 9 ++- api.php | 1 + donate.php | 11 ++-- engines/ahmia/hidden_service.php | 2 +- engines/bittorrent/get_magnet_1337x.php | 6 +- engines/bittorrent/merge.php | 2 +- engines/bittorrent/yts.php | 2 +- engines/librex/fallback.php | 4 +- engines/qwant/image.php | 14 +++-- engines/special/definition.php | 9 ++- engines/special/special.php | 2 +- engines/special/wikipedia.php | 2 + engines/text/duckduckgo.php | 5 +- engines/text/google.php | 9 +-- image_proxy.php | 2 +- index.php | 3 +- instances.json | 73 +++++++++---------------- instances.php | 2 +- locale/en.php | 53 ++++++++++++++++++ locale/localization.php | 28 ++++++++++ locale/nl.php | 52 ++++++++++++++++++ locale/sv.php | 53 ++++++++++++++++++ misc/footer.php | 4 +- misc/header.php | 3 +- misc/search_engine.php | 4 +- misc/tools.php | 6 +- opensearch.xml.example | 11 ++++ search.php | 2 +- settings.php | 24 ++++---- 29 files changed, 291 insertions(+), 107 deletions(-) create mode 100644 locale/en.php create mode 100644 locale/localization.php create mode 100644 locale/nl.php create mode 100644 locale/sv.php create mode 100644 opensearch.xml.example diff --git a/README.md b/README.md index aa92bb4..4317981 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,10 @@
+## Matrix + +If there's an important announcement, we do have a Matrix chatroom which you can join over at #librey:ahwx.org. + ### Instances You can find a list of instances on any LibreY instance by accessing /instances.php.
@@ -25,8 +29,10 @@ Instance list on [@codedipper](https://github.com/codedipper)'s instance:
[Tor](http://librex.revvybrr6pvbx4n3j4475h4ghw4elqr4t5xo2vtd3gfpu2nrsnhh57id.onion/instances.php)
[I2P](http://revekebotog64xrrammtsmjwtwlg3vqyzwdurzt2pu6botg4bejq.b32.i2p/instances.php)

-[@Ahwxorg](https://github.com/Ahwxorg)'s instance:
+[@Ahwxorg](https://github.com/Ahwxorg)'s instances:
[search.ahwx.org](https://search.ahwx.org/instances.php)
+[Tor](http://wn5jl6fxlzzfenlyu3lc4q7jpw2saplrywxvxtvqbguotwd4y5cjeuqd.onion/instances.php)
+[search2.ahwx.org](https://search.ahwx.org/instances.php)
[Tor](http://hyy7rcvknwb22v4nnoar635wntiwr4uwzhiuyimemyl4fz6k7tahj5id.onion/instances.php)

[@davidovski](https://github.com/davidovski)'s instance:
@@ -46,4 +52,3 @@ LibreY gives you text results from DuckDuckGo or Google, images from Qwant, and | LibreY | ✅ | ✅ | ✅ | ✅ | ✅ | | SearXNG | ❓ Not user friendly | ❓ Only host can set it | ✅ | ✅ | ❌ | | Whoogle | ✅ | ❓ Only host can set it | ❌ | ❌ | ❌ | - diff --git a/api.php b/api.php index 8084fd9..07efcd7 100644 --- a/api.php +++ b/api.php @@ -1,6 +1,7 @@

- Donate to the original developer of LibreX, a - project LibreY tries to improve. +X")?>

@@ -46,11 +45,9 @@
-

- Donate to the person that forked LibreX into LibreY -

+

+X")?> +

diff --git a/engines/ahmia/hidden_service.php b/engines/ahmia/hidden_service.php index a547078..ad5ffda 100644 --- a/engines/ahmia/hidden_service.php +++ b/engines/ahmia/hidden_service.php @@ -21,7 +21,7 @@ array_push($results, array ( - "title" => $title ? htmlspecialchars($title) : "No description provided", + "title" => $title ? htmlspecialchars($title) : TEXTS["result_no_description"], "url" => htmlspecialchars($url), // base_url is to be removed in the future, see #47 "base_url" => htmlspecialchars(get_base_url($url)), diff --git a/engines/bittorrent/get_magnet_1337x.php b/engines/bittorrent/get_magnet_1337x.php index caaed8a..5a729cd 100644 --- a/engines/bittorrent/get_magnet_1337x.php +++ b/engines/bittorrent/get_magnet_1337x.php @@ -4,12 +4,12 @@ $url = $_REQUEST["url"]; - $response = request($url); + $response = request($url, $config->curl_settings); $xpath = get_xpath($response); - + $magnet = $xpath->query("//main/div/div/div/div/div/ul/li/a/@href")[0]->textContent; $magnet_without_tracker = explode("&tr=", $magnet)[0]; $magnet = $magnet_without_tracker . $config->bittorent_trackers; header("Location: $magnet") -?> \ No newline at end of file +?> diff --git a/engines/bittorrent/merge.php b/engines/bittorrent/merge.php index 08bd0f7..3de1a69 100644 --- a/engines/bittorrent/merge.php +++ b/engines/bittorrent/merge.php @@ -38,7 +38,7 @@ echo "
"; if (empty($results)) { - echo "

There are no results. Please try different keywords!

"; + echo "

" . TEXTS["failure_empty"] . "

"; return; } diff --git a/engines/bittorrent/yts.php b/engines/bittorrent/yts.php index 9f7b515..3a80a69 100644 --- a/engines/bittorrent/yts.php +++ b/engines/bittorrent/yts.php @@ -25,7 +25,7 @@ $leechers = $torrent["peers"]; $size = $torrent["size"]; - $magnet = "magnet:?xt=urn:btih:$hash&dn=$name_encoded$this->opts->bittorrent_trackers"; + $magnet = "magnet:?xt=urn:btih:$hash&dn=$name_encoded" . $this->opts->bittorrent_trackers; array_push($results, array ( diff --git a/engines/librex/fallback.php b/engines/librex/fallback.php index d3b6c34..d33c615 100644 --- a/engines/librex/fallback.php +++ b/engines/librex/fallback.php @@ -49,6 +49,8 @@ if (!$instance) break; + if (!filter_var($instance, FILTER_VALIDATE_URL) || !filter_var($_SERVER["HTTP_HOST"], FILTER_VALIDATE_URL)) + continue; if (parse_url($instance)["host"] == parse_url($_SERVER['HTTP_HOST'])["host"]) continue; @@ -67,7 +69,7 @@ return array( "error" => array( - "message" => "No results found. Unable to fallback to other instances." + "message" => TEXTS["failure_fallback"] ) ); } diff --git a/engines/qwant/image.php b/engines/qwant/image.php index c26dd04..e7d4135 100644 --- a/engines/qwant/image.php +++ b/engines/qwant/image.php @@ -3,7 +3,7 @@ public function get_request_url() { $page = $this->page / 10 + 1; // qwant has a different page system $query = urlencode($this->query); - + return "https://lite.qwant.com/?q=$query&t=images&p=$page"; } @@ -15,7 +15,7 @@ return $results; foreach($xpath->query("//a[@rel='noopener']") as $result) - { + { $image = $xpath->evaluate(".//img", $result)[0]; if ($image) @@ -28,25 +28,29 @@ $alt = $image->getAttribute("alt"); $thumbnail = urlencode($image->getAttribute("src")); - array_push($results, + array_push($results, array ( "thumbnail" => urldecode(htmlspecialchars($thumbnail)), "alt" => htmlspecialchars($alt), "url" => htmlspecialchars($real_url) ) ); - + } } return $results; } - + public static function print_results($results, $opts) { echo "
"; foreach($results as $result) { + if (!$result + || !array_key_exists("url", $result) + || !array_key_exists("alt", $result)) + continue; $thumbnail = urlencode($result["thumbnail"]); $alt = $result["alt"]; $url = $result["url"]; diff --git a/engines/special/definition.php b/engines/special/definition.php index 1ca5479..23cfbd2 100644 --- a/engines/special/definition.php +++ b/engines/special/definition.php @@ -4,13 +4,16 @@ public function get_request_url() { $split_query = explode(" ", $this->query); $reversed_split_q = array_reverse($split_query); - $word_to_define = $reversed_split_q[1]; + $word_to_define = $reversed_split_q[1] == "define" ? $reversed_split_q[0] : $reversed_split_q[1]; return "https://api.dictionaryapi.dev/api/v2/entries/en/$word_to_define"; } - + public function parse_results($response) { $json_response = json_decode($response, true); + if (!$json_response) + return array(); + if (!array_key_exists("title", $json_response)) { $definition = $json_response[0]["meanings"][0]["definitions"][0]["definition"]; @@ -23,7 +26,7 @@ ) ); } - + } } ?> diff --git a/engines/special/special.php b/engines/special/special.php index 41f706f..f31d4d5 100644 --- a/engines/special/special.php +++ b/engines/special/special.php @@ -13,7 +13,7 @@ if ($amount_to_convert != 0) return 1; } - else if (strpos($query_lower, "mean") && count($split_query) >= 2) // definition + else if ((strpos($query_lower, "mean") || str_starts_with($query_lower, "define")) && count($split_query) >= 2) // definition { return 2; } diff --git a/engines/special/wikipedia.php b/engines/special/wikipedia.php index ad8effb..8c60c46 100644 --- a/engines/special/wikipedia.php +++ b/engines/special/wikipedia.php @@ -14,6 +14,8 @@ public function parse_results($response) { $json_response = json_decode($response, true); + if (!$json_response) + return array(); $first_page = array_values($json_response["query"]["pages"])[0]; diff --git a/engines/text/duckduckgo.php b/engines/text/duckduckgo.php index da35f93..ae80446 100644 --- a/engines/text/duckduckgo.php +++ b/engines/text/duckduckgo.php @@ -1,7 +1,6 @@ query)); $results = array(); @@ -53,7 +52,7 @@ // base_url is to be removed in the future, see #47 "base_url" => htmlspecialchars(get_base_url($url)), "description" => $description == null ? - "No description was provided for this site." : + TEXTS["result_no_description"] : htmlspecialchars($description->textContent) ) ); diff --git a/engines/text/google.php b/engines/text/google.php index 814eb47..b664542 100644 --- a/engines/text/google.php +++ b/engines/text/google.php @@ -46,11 +46,8 @@ if ($url == null) continue; - if (!empty($results)) // filter duplicate results, ignore special result - { - if (end($results)["url"] == $url->textContent) + if (!empty($results) && array_key_exists("url", $results) && end($results)["url"] == $url->textContent) continue; - } $url = $url->textContent; @@ -64,7 +61,7 @@ // base_url is to be removed in the future, see #47 "base_url" => htmlspecialchars(get_base_url($url)), "description" => $description == null ? - "No description was provided for this site." : + TEXTS["result_no_description"] : htmlspecialchars($description->textContent) ) ); @@ -72,7 +69,7 @@ if (empty($results) && !str_contains($response, "Our systems have detected unusual traffic from your computer network.")) { $results["error"] = array( - "message" => "There are no results. Please try different keywords!" + "message" => TEXTS["failure_empty"] ); } diff --git a/image_proxy.php b/image_proxy.php index 9b5f775..2359156 100644 --- a/image_proxy.php +++ b/image_proxy.php @@ -11,7 +11,7 @@ if (in_array($requested_root_domain, $allowed_domains)) { $image = $url; - $image_src = request($image); + $image_src = request($image, $config->curl_settings); header("Content-Type: image/png"); echo $image_src; diff --git a/index.php b/index.php index f99b84b..a5d913e 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,3 @@ - SuperLibreX @@ -10,7 +9,7 @@
- +
diff --git a/instances.json b/instances.json index 6c0f328..11712d9 100644 --- a/instances.json +++ b/instances.json @@ -29,22 +29,29 @@ "librey": true }, { - "clearnet": "https://librex.zzls.xyz/", - "tor": "http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/", - "i2p": "http://zzlsaymhcfla7vibo3a223bybeecu3bd5z6rmw2u4y76maqeu76q.b32.i2p/", - "country": "CL", - "librey": true + "clearnet": "https://ly.owo.si/", + "tor": "http://ly.pk47sgwhncn5cgidm7bofngmh7lc7ukjdpk5bjwfemmyp27ovl25ikyd.onion/", + "i2p": "http://d4vi3tvfui2rfzsxr33tin4a6542heulf4mhkokdpbhbcejlg3la.b32.i2p/", + "country": "DE", + "librey": true }, - { - "clearnet": "https://lx.vern.cc/", - "tor": "http://lx.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/", - "i2p": "http://vernziqfqvweijfaacmwazohgpdo2bt2ib2jlupt2pwwu27bhgxq.b32.i2p/", + { + "clearnet": "https://librey.danyaal.xyz/", + "tor": "http://libreytvcxak42f3p7nxh3filsp2pjqesjii5f5e4eivs2gpcn77tdid.onion/", + "i2p": "http://libreyqmoa2iuihoyyscolhaymrxxgdrmkgmiufnyaukwub2c7ya.b32.i2p/", + "country": "GB", + "librey": true + }, + { + "clearnet": "https://librey.org/", + "tor": "http://jxhkfulu6wpdl4apuy4dyivuowmpprvsd7e3el2z73crq7fmyv7rjkyd.onion/", + "i2p": null, "country": "US", "librey": true }, { - "clearnet": "https://librey.org/", - "tor": "http://jxhkfulu6wpdl4apuy4dyivuowmpprvsd7e3el2z73crq7fmyv7rjkyd.onion/", + "clearnet": "https://librex.supernets.org/", + "tor": "http://ouosr2fq3lktngcvbz4r4op2lab5hbiz5y6g6toorsgieb7elet76jad.onion/", "i2p": null, "country": "US", "librey": true @@ -56,20 +63,6 @@ "country": "GB", "librey": true }, - { - "clearnet": "https://librey.spaceint.fr/", - "tor": null, - "i2p": null, - "country": "FR", - "librey": true - }, - { - "clearnet": "https://librey.bloatcat.tk/", - "tor": null, - "i2p": null, - "country": "IS", - "librey": true - }, { "clearnet": "https://search.funami.tech/", "tor": null, @@ -106,11 +99,11 @@ "librey": true }, { - "clearnet": "https://librex.yogeshlamichhane.com.np/", - "tor": null, - "i2p": null, - "country": "FI", - "librey": true + "clearnet": "https://librex.yogeshlamichhane.com.np/", + "tor": null, + "i2p": null, + "country": "FI", + "librey": true }, { "clearnet": "https://librey.baczek.me/", @@ -127,25 +120,11 @@ "librey": true }, { - "clearnet": "https://librex.supernets.org/", - "tor": "http://ouosr2fq3lktngcvbz4r4op2lab5hbiz5y6g6toorsgieb7elet76jad.onion/", - "i2p": null, - "country": "US", - "librey": true - }, - { - "clearnet": "https://lx.owo.si/", - "tor": "http://lx.pk47sgwhncn5cgidm7bofngmh7lc7ukjdpk5bjwfemmyp27ovl25ikyd.onion/", - "i2p": "http://d4vi3tvfui2rfzsxr33tin4a6542heulf4mhkokdpbhbcejlg3la.b32.i2p/", - "country": "DE", - "librey": false - }, - { - "clearnet": "https://search.tildevarsh.in/", + "clearnet": "https://search.seitan-ayoub.lol/", "tor": null, "i2p": null, - "country": "IN", - "librey": false + "country": "DE", + "librey": true }, { "clearnet": "https://librex.myroware.eu/", diff --git a/instances.php b/instances.php index 0ecffc5..a0f5b60 100644 --- a/instances.php +++ b/instances.php @@ -51,7 +51,7 @@ list_instances($librey_instances); ?> -

The following instances are running the older LibreX:

+

LibreX")?>:

diff --git a/locale/en.php b/locale/en.php new file mode 100644 index 0000000..1cb4b86 --- /dev/null +++ b/locale/en.php @@ -0,0 +1,53 @@ + "LibreY search", + "search_button" => "Search with LibreY", + "torrent_search_button" => "Search torrents with LibreY", + + "source_code_link" => "Source", + "instances_link" => "Instances", + "settings_link" => "Settings", + "api_link" => "API", + "donate_link" => "Donate ❤️", + + "latest_commit" => "Latest commit: %s", + + "category_general" => "General", + "category_images" => "Images", + "category_videos" => "Videos", + "category_torrents" => "Torrents", + "category_tor" => "Tor", + + "feature_disabled" => "The host has disabled this feature :C", + + "settings_title" => "Settings", + "settings_theme" => "Theme", + "settings_special_disabled" => "Disable special queries (e.g.: currency conversion)", + + "settings_frontends" => "Privacy friendly frontends", + "settings_frontends_description" => "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)", + "settings_frontends_disable" => "Disable frontends", + + "settings_search_settings" => "Search settings", + "settings_language" => "Language", + + "settings_number_of_results" => "Number of results per page", + + "settings_safe_search" => "Safe search", + "settings_save" => "Save", + "settings_reset" => "Reset", + + + "failure_fallback" => "No results found. Unable to fallback to other instances.", + "failure_empty" => "No results found. Please try different keywords!", + "result_no_description" => "No description was provided for this site.", + + "instances_librex" => "The following instances are running the older %s", + + "donate_original_developer" => "Donate to the original developer of %s, a + project LibreY tries to improve.", + "donate_fork" => "Donate to the person that forked %s into LibreY" +); + +?> diff --git a/locale/localization.php b/locale/localization.php new file mode 100644 index 0000000..65bb17a --- /dev/null +++ b/locale/localization.php @@ -0,0 +1,28 @@ + diff --git a/locale/nl.php b/locale/nl.php new file mode 100644 index 0000000..c3d64c0 --- /dev/null +++ b/locale/nl.php @@ -0,0 +1,52 @@ + "LibreY search", + "search_button" => "Zoek met LibreY", + "torrent_search_button" => "Zoek naar torrents met LibreY", + + "source_code_link" => "Broncode", + "instances_link" => "Instances", + "settings_link" => "Instellingen", + "api_link" => "API", + "donate_link" => "Doneer ❤️", + + "latest_commit" => "Laatste commit: %s", + + "category_general" => "Algemeem", + "category_images" => "Foto's", + "category_videos" => "Videos", + "category_torrents" => "Torrents", + "category_tor" => "Tor", + + "feature_disabled" => "De host heeft deze functie uitgeschakeld :C", + + "settings_title" => "Instellingen", + "settings_theme" => "Thema", + "settings_special_disabled" => "Schakel speciale zoekopdrachten uit (bijvoorbeeld: valutaconversie)", + + "settings_frontends" => "Privacyvriendelijke frontends", + "settings_frontends_description" => "Als je - bijvoorbeeld - naar YouTube wil kijken zonder bespioneerd te worden, klik dan op \"Invidious\", zoek een instance die het best voor jou is en plak de URL hier in (correct formaat: https://example.com)", + "settings_frontends_disable" => "Frontends uitschakelen", + + "settings_search_settings" => "Zoek-gerelateerde instellingen", + "settings_language" => "Taal", + + "settings_number_of_results" => "Resulaten per pagina (in nummers)", + + "settings_safe_search" => "Safe search", + "settings_save" => "Opslaan", + "settings_reset" => "Reset", + + + "failure_fallback" => "Geen resultaten gevonden. Kan niet terugvallen op andere instances.", + "failure_empty" => "Geen resultaten gevonden. Probeer een andere zoekterm/andere keywords!", + "result_no_description" => "Voor deze website is geen omschrijving gegeven.", + + "instances_librex" => "De volgende instances draaien de oudere versie; %s", + + "donate_original_developer" => "Doneer aan de originele ontwikkelaar van %s, een project dat LibreY probeert te verbeteren.", + "donate_fork" => "Doneer aan de persoon die %s heeft geforkt naar LibreY" +); + +?> diff --git a/locale/sv.php b/locale/sv.php new file mode 100644 index 0000000..f0d5c40 --- /dev/null +++ b/locale/sv.php @@ -0,0 +1,53 @@ + "LibreY search", + "search_button" => "Sök med LibreY", + "torrent_search_button" => "Sök torrents med LibreY", + + "source_code_link" => "Källkod", + "instances_link" => "Instanser", + "settings_link" => "Inställningar", + "api_link" => "API", + "donate_link" => "Donera ❤️", + + "latest_commit" => "Senaste commit: %s", + + "category_general" => "Allmänt", + "category_images" => "Bilder", + "category_videos" => "Videor", + "category_torrents" => "Torrents", + "category_tor" => "Tor", + + "feature_disabled" => "Funktionen är inaktiverad av serverägaren :C", + + "settings_title" => "Inställningar", + "settings_theme" => "Tema", + "settings_special_disabled" => "Inaktivera specialförfrågningar (t.ex. valutaomvandlare)", + + "settings_frontends" => "Privata frontends", + "settings_frontends_description" => "För om du vill titta på YouTube utan att bli spionerad på, klicka på \"Invidious\", hitta den instans som passar dig bäst och klistra in (korrekt format: https://example.com)", + "settings_frontends_disable" => "Stäng av frontends", + + "settings_search_settings" => "Sökinställningar", + "settings_language" => "Språk", + + "settings_number_of_results" => "Antal resultat per sida", + + "settings_safe_search" => "Safe search", + "settings_save" => "Spara", + "settings_reset" => "Återställ", + + + "failure_fallback" => "Inga resultat hittades. Gick inte att använda andra instanser som reservlösning.", + "failure_empty" => "Inga resultat hittades. Var god försök med andra nyckelord!", + "result_no_description" => "Ingen beskrivning finns för denna webbplats.", + + "instances_librex" => "Följande instanser kör den äldre %s", + + "donate_original_developer" => "Donera till orginalutvecklaren av %s, ett + projekt som LibreY försöker förbättra.", + "donate_fork" => "Donera till personen som forkade %s till LibreY" +); + +?> diff --git a/misc/footer.php b/misc/footer.php index a6266a5..10e875a 100644 --- a/misc/footer.php +++ b/misc/footer.php @@ -3,8 +3,8 @@ Settings API Donate - Onion - SuperNETs + Onion + SuperNETs
diff --git a/misc/header.php b/misc/header.php index b7944bf..9a8ae7b 100644 --- a/misc/header.php +++ b/misc/header.php @@ -1,3 +1,4 @@ + @@ -6,7 +7,7 @@ - + " type="application/opensearchdescription+xml" href="opensearch.xml?method=POST" rel="search"/> disable_bittorent_search) { - echo "

The host disabled this feature! :C

"; + echo "

" . TEXTS["feature_disabled"] . "

"; break; } @@ -129,7 +129,7 @@ case 4: if ($opts->disable_hidden_service_search) { - echo "

The host disabled this feature! :C

"; + echo "

" . TEXTS["feature_disabled"] . "

"; break; } require "engines/ahmia/hidden_service.php"; diff --git a/misc/tools.php b/misc/tools.php index 389fc24..e28bd6d 100644 --- a/misc/tools.php +++ b/misc/tools.php @@ -77,11 +77,9 @@ return $xpath; } - function request($url) { - $config ??= require "config.php"; - + function request($url, $conf) { $ch = curl_init($url); - curl_setopt_array($ch, $config->curl_settings); + curl_setopt_array($ch, $conf); $response = curl_exec($ch); return $response; diff --git a/opensearch.xml.example b/opensearch.xml.example new file mode 100644 index 0000000..f72098f --- /dev/null +++ b/opensearch.xml.example @@ -0,0 +1,11 @@ + + + LibreY + Framework and javascript free privacy respecting meta search engine + UTF-8 + LibreY search + + + diff --git a/search.php b/search.php index 5170823..5ff9241 100644 --- a/search.php +++ b/search.php @@ -65,7 +65,7 @@ continue; } - echo "type) ? "class=\"active\" " : "") . "href=\"./search.php?q=" . urlencode($opts->query) . "&p=0&t=" . $category_index . "\">\""" . ucfirst($category) . ""; + echo "type) ? "class=\"active\" " : "") . "href=\"./search.php?q=" . urlencode($opts->query) . "&p=0&t=" . $category_index . "\">\""" . TEXTS["category_$category"] . ""; } ?>
diff --git a/settings.php b/settings.php index 9baeacd..44be838 100644 --- a/settings.php +++ b/settings.php @@ -33,14 +33,14 @@ require "misc/header.php"; ?> - LibreY - Settings + LibreY - <?php printtext("settings_title");?>

Settings

- +
- + disable_special ? "checked" : ""; ?> >
-

Privacy friendly frontends

-

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)

+

+

frontends as $frontend => $data) @@ -90,14 +90,14 @@ ?>
- + disable_frontends ? "checked" : ""; ?> >
-

Search settings

+

- Language + " >
- + safe_search ? "checked" : ""; ?> >
- - + +