mirror of
https://git.bakhai.co.in/FbIN/LibreY.git
synced 2025-11-06 20:41:31 +05:30
commit
c9898cf261
95 changed files with 5217 additions and 0 deletions
81
engines/librex/fallback.php
Normal file
81
engines/librex/fallback.php
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
class LibreXFallback extends EngineRequest {
|
||||
protected $instance;
|
||||
public function __construct($instance, $opts, $mh) {
|
||||
$this->instance = $instance;
|
||||
parent::__construct($opts, $mh);
|
||||
}
|
||||
|
||||
public function get_request_url() {
|
||||
return $this->instance . "api.php?" . opts_to_params($this->opts) . "&nfb=1";
|
||||
}
|
||||
|
||||
public function parse_results($response) {
|
||||
$response = json_decode($response, true);
|
||||
if (!$response)
|
||||
return array();
|
||||
|
||||
return array_values($response);
|
||||
}
|
||||
}
|
||||
|
||||
function load_instances($cooldowns) {
|
||||
$instances_json = json_decode(file_get_contents("instances.json"), true);
|
||||
|
||||
if (empty($instances_json["instances"]))
|
||||
return array();
|
||||
|
||||
$instances = array_map(fn($n) => $n['clearnet'], array_filter($instances_json['instances'], fn($n) => !is_null($n['clearnet'])));
|
||||
$instances = array_filter($instances, fn($n) => !has_cooldown($n, $cooldowns));
|
||||
shuffle($instances);
|
||||
return $instances;
|
||||
}
|
||||
|
||||
function get_librex_results($opts) {
|
||||
if (!$opts->do_fallback)
|
||||
return array();
|
||||
|
||||
$cooldowns = $opts->cooldowns;
|
||||
$instances = load_instances($cooldowns);
|
||||
|
||||
$results = array();
|
||||
$tries = 0;
|
||||
|
||||
do {
|
||||
$tries++;
|
||||
|
||||
$instance = array_pop($instances);
|
||||
|
||||
if (!$instance)
|
||||
break;
|
||||
|
||||
if (!(filter_var($instance, FILTER_VALIDATE_URL)))
|
||||
continue;
|
||||
|
||||
if (parse_url($instance)["host"] == $_SERVER['HTTP_HOST'])
|
||||
continue;
|
||||
|
||||
$librex_request = new LibreXFallback($instance, $opts, null);
|
||||
|
||||
$results = $librex_request->get_results();
|
||||
|
||||
if (!empty($results)) {
|
||||
$results["results_source"] = parse_url($instance)["host"];
|
||||
return $results;
|
||||
}
|
||||
|
||||
// on fail then do this
|
||||
$timeout = ($opts->request_cooldown ?? "1") * 60;
|
||||
$cooldowns = set_cooldown($instance, $timeout, $cooldowns);
|
||||
|
||||
} while (!empty($instances));
|
||||
|
||||
return array(
|
||||
"error" => array(
|
||||
"message" => TEXTS["failure_fallback"]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue