Skip to content

Instantly share code, notes, and snippets.

@flashwave
Created June 23, 2024 11:33
Show Gist options
  • Save flashwave/524320a227a323d00378797595830a4e to your computer and use it in GitHub Desktop.
Save flashwave/524320a227a323d00378797595830a4e to your computer and use it in GitHub Desktop.
tako zone redirect script (it sucks)
<?php
define('BASE62_CHARS', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
function base62_encode(int $input): string {
$output = '';
for($i = floor(log10($input) / log10(62)); $i >= 0; --$i) {
$index = (int)floor($input / (62 ** $i));
$output .= substr(BASE62_CHARS, $index, 1);
$input -= $index * (62 ** $i);
}
return $output;
}
function base62_decode(string $input): int {
$output = 0;
$length = strlen($input) - 1;
for($i = 0; $i <= $length; ++$i)
$output += strpos(BASE62_CHARS, $input[$i]) * (62 ** ($length - $i));
return $output;
}
// whoa is this pytohn !!?
if(basename($_SERVER['PHP_SELF']) === basename(__FILE__)) {
if(!empty($_GET['decode']) && is_string($_GET['decode']))
echo base62_decode($_GET['decode']);
elseif(!empty($_GET['encode']) && is_string($_GET['encode']))
echo base62_encode($_GET['encode']);
}
<?php
require_once '_base62.php';
try {
$pdo = new PDO('mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=takozone;charset=utf8mb4', 'takozone', 'secret~', [
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::MYSQL_ATTR_INIT_COMMAND => "
SET SESSION
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION',
time_zone = '+00:00';
",
]);
} catch(Exception $ex) {
echo '<h3>Unable to connect to database</h3>';
die($ex->getMessage());
}
$horrendous = substr($_SERVER['HTTP_USER_AGENT'], 0, 7) === 'Satori/';
if(!empty($_GET['create']) && is_string($_GET['create']) && ($horrendous || in_array($_SERVER['REMOTE_ADDR'], ['188.166.77.99', '2a03:b0c0:2:d0::d62:2001']))) {
/*$getExisting = $pdo->prepare('
SELECT `link_id` FROM `tako_links` WHERE `link_target` = :target
');
$getExisting->bindValue('target', $_GET['create']);
$linkId = $getExisting->execute() ? (int)$getExisting->fetchColumn() : 0;
if($linkId < 1) {
$insertLink = $pdo->prepare('
INSERT INTO `tako_links` (`link_target`)
VALUES (:target)
');
$insertLink->bindValue('target', $_GET['create']);
$insertLink->execute();
$linkId = (int)$pdo->lastInsertId();
}
echo 'https://tako.zone/g/' . base62_encode($linkId);*/
exit;
}
$linkId = filter_input(INPUT_GET, 'id');
$linkId = base62_decode($linkId);
if($linkId > 0) {
$getLink = $pdo->prepare('
SELECT `link_target`
FROM `tako_links`
WHERE `link_id` = :id
');
$getLink->bindValue('id', $linkId);
$linkTarget = $getLink->execute() ? $getLink->fetchColumn() : '';
}
if(empty($linkTarget))
$linkTarget = '/';
header("Location: $linkTarget");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment