add structure for `Oracles' (special answers depending on queries + a few implementations (#10)
incl. a calculator, a hash encoder + rot13 and b64!, and a "what time is it" with timezone selection frontend injected in $payload["left"] in web.php you can see this live [on my instance](https://4get.silly.computer/web?s=7%2B8(9%5E2)&scraper=brave&nsfw=yes) (there are some issues that aren't related to this PR. favicons, etc. I'll fix them later.) Reviewed-on: https://git.lolcat.ca/lolcat/4get/pulls/10 Co-authored-by: cynic <admin@cynic.moe> Co-committed-by: cynic <admin@cynic.moe>
This commit is contained in:
parent
d312674df7
commit
8762d68466
6 changed files with 349 additions and 0 deletions
40
oracles/encoder.php
Normal file
40
oracles/encoder.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
include_once("oracles/base.php");
|
||||
class encoder extends oracle {
|
||||
public $info = [
|
||||
"name" => "text encoder/hasher"
|
||||
];
|
||||
private $special_types = [
|
||||
"rot13",
|
||||
"base64"
|
||||
];
|
||||
public function check_query($q) {
|
||||
$types = array_merge($this->special_types, hash_algos());
|
||||
foreach ($types as $type) {
|
||||
$type .= " ";
|
||||
if (str_starts_with($q, $type)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function generate_response($q)
|
||||
{
|
||||
$type = explode(" ", $q)[0];
|
||||
$victim = substr($q, strlen($type)+1);
|
||||
if (in_array($type, hash_algos())) {
|
||||
return [$type." hash" => hash($type, $victim)];
|
||||
}
|
||||
switch ($type) {
|
||||
case "rot13":
|
||||
return ["rot13 encoded" => str_rot13($victim)];
|
||||
case "base64":
|
||||
return [
|
||||
"base64 encoded" => base64_encode($victim),
|
||||
"base64 decoded" => base64_decode($victim)
|
||||
];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue