Compare commits
No commits in common. '12fd0b11a8fa9153e9ab40a2d2e6300fb5ae5e64' and '03373bc7bbe1ac59c5b7f8fc0aaa0cebbb2f2d8b' have entirely different histories.
12fd0b11a8
...
03373bc7bb
@ -1,10 +0,0 @@ |
|||||||
# Remote access |
|
||||||
Require ip 68.147.189.97 |
|
||||||
Require ip 96.53.11.174 |
|
||||||
Require ip 127.0.0.1 |
|
||||||
Require ip 137.184.238.236 |
|
||||||
|
|
||||||
#Require all granted |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,17 +0,0 @@ |
|||||||
{ |
|
||||||
"printWidth": 100, |
|
||||||
"proseWrap": "always", |
|
||||||
"semi": false, |
|
||||||
"singleQuote": true, |
|
||||||
"braceStyle": "1tbs", |
|
||||||
"tabWidth": 3, |
|
||||||
"plugins": [ |
|
||||||
"@prettier/plugin-php" |
|
||||||
], |
|
||||||
"overrides": [ |
|
||||||
{ |
|
||||||
"files": "*.php", |
|
||||||
"options": { "parser": "html" } |
|
||||||
} |
|
||||||
] |
|
||||||
} |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
<footer> |
|
||||||
<p>Copy © 2025</p> |
|
||||||
</footer> |
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.min.js" integrity="sha512-ykZ1QQr0Jy/4ZkvKuqWn4iF3lqPZyij9iRv6sGqLRdTPkY69YX6+7wvVGmsdBbiIfN/8OdsI7HABjvEok6ZopQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> |
|
||||||
@ -1,15 +0,0 @@ |
|||||||
<nav class="navbar navbar-dark navbar-expand"> |
|
||||||
<div class="container"> |
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#main-nav" aria-controls="main-nav" aria-expanded="false" aria-label="Toggle navigation"> |
|
||||||
<span class="navbar-toggler-icon"></span> |
|
||||||
</button> |
|
||||||
<a class="navbar-brand">{project}</a> |
|
||||||
<div id="main-nav" class="collapse navbar-collapse flex-grow-0"> |
|
||||||
<ul class="navbar-nav me-auto"> |
|
||||||
<li class="nav-item"><a class="nav-link active">Services</a></li> |
|
||||||
<li class="nav-item"><a class="nav-link">News</a></li> |
|
||||||
<li class="nav-item"><a class="nav-link">Documentation</a></li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</nav> |
|
||||||
@ -1,7 +0,0 @@ |
|||||||
<title>{title}</title> |
|
||||||
<meta charset="utf-8"> |
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" integrity="sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuXg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> |
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="/meta/favicon.ico"> |
|
||||||
@ -1,59 +0,0 @@ |
|||||||
<form method="post"> |
|
||||||
<div class="row gx-3"> |
|
||||||
<div class="col-4"> |
|
||||||
<div class="p-3 border rounded-3 h-100"> |
|
||||||
<label class="form-label"><span class="form-text">Src </span> <input class="form-control" name="src" placeholder="example" required><em>example</em>.tr.jit-tr.com</label> |
|
||||||
<label class="form-label"><span class="form-text">Site </span><input class="form-control" name="site" placeholder="example.com" required></label> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-8"> |
|
||||||
<div class="p-3 border rounded-3 h-100"> |
|
||||||
<div class="form-text">Append</div> |
|
||||||
<textarea class="form-control" name="append"><script src="https://dev.api.jit-tr.com"></script></textarea> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="col-12 mt-3"> |
|
||||||
<button class="btn btn-primary" type="submit">Add new site</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
<?php |
|
||||||
if (count($_POST)!==0) { |
|
||||||
require('config.php'); |
|
||||||
error_log(json_encode($_POST)); |
|
||||||
|
|
||||||
$payload= (object)[]; |
|
||||||
$payload->src = $_POST['src'] . '.tr.jit-tr.com'; |
|
||||||
$payload->site = 'https://' . $_POST['site']; |
|
||||||
$payload->append = $_POST['append']; |
|
||||||
|
|
||||||
error_log(json_encode($payload)); |
|
||||||
|
|
||||||
$ch = curl_init($cfg['API_ENDPOINT_REDIRECTS']); |
|
||||||
|
|
||||||
curl_setopt_array($ch, [ |
|
||||||
CURLOPT_RETURNTRANSFER => true, |
|
||||||
CURLOPT_POST => true, |
|
||||||
CURLOPT_HTTPHEADER => [ |
|
||||||
'Accept: application/json', |
|
||||||
'Content-Type: application/json', |
|
||||||
"X-API-Key: $cfg[API_KEY]" |
|
||||||
], |
|
||||||
CURLOPT_POSTFIELDS => json_encode($payload), |
|
||||||
]); |
|
||||||
|
|
||||||
$response = curl_exec($ch); |
|
||||||
|
|
||||||
if (curl_errno($ch)) { |
|
||||||
echo 'Curl error: ' . curl_error($ch); |
|
||||||
curl_close($ch); |
|
||||||
exit; |
|
||||||
} else { |
|
||||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
||||||
header('Location: list-site.php'); |
|
||||||
echo "HTTP Status Code: $httpCode\n"; |
|
||||||
echo "Response:\n$response"; |
|
||||||
curl_close($ch); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,18 +0,0 @@ |
|||||||
/* Add site scipts */ |
|
||||||
((func) => { |
|
||||||
if (document.readyState === "loading") { |
|
||||||
document.addEventListener("DOMContentLoaded", func); |
|
||||||
} else { |
|
||||||
func(); |
|
||||||
} |
|
||||||
})( |
|
||||||
()=>{ |
|
||||||
const input_src = document.querySelector('input[name=src]') |
|
||||||
const em = document.querySelector('input[name=src] ~ em') |
|
||||||
em.innerText = input_src.value |
|
||||||
|
|
||||||
input_src.onkeyup=(e)=>{ |
|
||||||
em.innerText = e.target.value |
|
||||||
} |
|
||||||
} |
|
||||||
) |
|
||||||
@ -1,3 +0,0 @@ |
|||||||
API_KEY='24cb8ac71d5c6ee99f3da398e1234ae3dbf1cfaa86750711d9b63032caeaa164' |
|
||||||
API_ENDPOINT_REDIRECTS="https://pr.sr.jit-tr.com/pr-admin/api/redirects" |
|
||||||
|
|
||||||
@ -1,3 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
$cfg = parse_ini_file('config.ini'); |
|
||||||
@ -1,53 +0,0 @@ |
|||||||
<?php |
|
||||||
require_once 'config.php'; |
|
||||||
require_once 'lib/template.php'; |
|
||||||
|
|
||||||
# Necessary since I'm not using RewriteRule |
|
||||||
$basehref = dirname($_SERVER['SCRIPT_NAME']); |
|
||||||
|
|
||||||
if (isset($_SERVER['PATH_INFO'])) { |
|
||||||
if ($_SERVER['PATH_INFO'] === '/' ) { |
|
||||||
$contents = include_path('/list-site.php'); |
|
||||||
} else { |
|
||||||
$contents = include_path($_SERVER['PATH_INFO']); |
|
||||||
} |
|
||||||
} else { |
|
||||||
header("Location: {$_SERVER['SCRIPT_NAME']}/"); |
|
||||||
exit; |
|
||||||
} |
|
||||||
|
|
||||||
?> |
|
||||||
<!doctype html> |
|
||||||
<html> |
|
||||||
<head lang="en"> |
|
||||||
<?= snippet_include('_meta.html', ['title'=>'Hello World' ]) ?> |
|
||||||
|
|
||||||
<!-- cache breaking --> |
|
||||||
<link rel="stylesheet" href="<?= $basehref ?>/main.css?<?= time() ?>">
|
|
||||||
<style> |
|
||||||
/* |
|
||||||
main,footer,.container,.row { border: 1px dashed #ffab27; } |
|
||||||
*/ |
|
||||||
</style> |
|
||||||
</head> |
|
||||||
<body> |
|
||||||
<header class="mb-5"> |
|
||||||
<?= snippet_include('_header.html') ?> |
|
||||||
</header> |
|
||||||
|
|
||||||
<main class="bg-body-tertiary flex-grow-1"> |
|
||||||
<div class="container"> |
|
||||||
<?= $contents ?> |
|
||||||
</div> |
|
||||||
</main> |
|
||||||
|
|
||||||
<footer> |
|
||||||
<div class="container"> |
|
||||||
<?= snippet_include('_footer.html') ?> |
|
||||||
</div> |
|
||||||
</footer> |
|
||||||
|
|
||||||
<!-- cache breaking --> |
|
||||||
<script src="<?= $basehref ?>/app.js?<?= time() ?>"></script>
|
|
||||||
</body> |
|
||||||
</html> |
|
||||||
@ -1,61 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
/** |
|
||||||
* include_path |
|
||||||
* |
|
||||||
* uses a partial url, eg '/foo' to locate a corresponding |
|
||||||
* php file, eg 'foo.php', and execute it. |
|
||||||
* |
|
||||||
* url_fragment - a key to locating php files, no extetension |
|
||||||
letters and hyphens are ok |
|
||||||
*/ |
|
||||||
function include_path($url_fragment) { |
|
||||||
if (preg_match('#^/([a-z-]+.php)$#', $url_fragment, $matches)) { |
|
||||||
$path = __DIR__ . '/../' . $matches[1]; |
|
||||||
} else { |
|
||||||
$path = null; |
|
||||||
} |
|
||||||
|
|
||||||
if (file_exists($path)) { |
|
||||||
ob_start(); |
|
||||||
include $path; |
|
||||||
$result = ob_get_clean(); |
|
||||||
|
|
||||||
return $result; |
|
||||||
} else { |
|
||||||
# Hard bail |
|
||||||
http_response_code(404); |
|
||||||
echo "404: $path not found\n"; |
|
||||||
exit; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* snippet_include |
|
||||||
* |
|
||||||
* loads non_php file for parsing. |
|
||||||
* Uses {varname} to replace strings |
|
||||||
* |
|
||||||
* filename |
|
||||||
* context - a keyed array for matching |
|
||||||
* eg [ 'title'=>'Home Page', ... ] |
|
||||||
*/ |
|
||||||
function snippet_include($filename, $context=[]) { |
|
||||||
$snippet = file_get_contents($filename); |
|
||||||
|
|
||||||
// Handle comments {* ... *} |
|
||||||
$snippet = preg_replace('/ *{\*(.*?)\*}\n*/s','',$snippet); |
|
||||||
|
|
||||||
// Use regex to find {placeholders} in the template |
|
||||||
// Note this uses a callback function to do the matches |
|
||||||
$snippet = preg_replace_callback('/\{\s*(\w+)\s*\}/', function($matches) use ($context) { |
|
||||||
$key = $matches[1]; |
|
||||||
|
|
||||||
$value = isset($context[$key]) ? $context[$key] : $key; |
|
||||||
|
|
||||||
return $value; |
|
||||||
}, $snippet); |
|
||||||
|
|
||||||
return $snippet; |
|
||||||
} |
|
||||||
|
|
||||||
@ -1,48 +0,0 @@ |
|||||||
<pre><?php |
|
||||||
require('config.php'); |
|
||||||
|
|
||||||
$rows = []; |
|
||||||
$ch = curl_init($cfg['API_ENDPOINT_REDIRECTS']); |
|
||||||
|
|
||||||
// Set curl options |
|
||||||
curl_setopt_array($ch, [ |
|
||||||
CURLOPT_FAILONERROR => true, |
|
||||||
CURLOPT_FOLLOWLOCATION => false, |
|
||||||
CURLOPT_RETURNTRANSFER => true, |
|
||||||
CURLOPT_HTTPHEADER => [ |
|
||||||
'X-API-Key: ' . $cfg['API_KEY'], |
|
||||||
'accept: application/json', |
|
||||||
], |
|
||||||
]); |
|
||||||
|
|
||||||
$response = curl_exec($ch); |
|
||||||
|
|
||||||
if (!curl_errno($ch) && curl_getinfo($ch)['http_code'] === 200) { |
|
||||||
$rows = json_decode($response); |
|
||||||
} else { |
|
||||||
var_dump(curl_getinfo($ch)['http_code']); |
|
||||||
var_dump(curl_error($ch)); |
|
||||||
} |
|
||||||
curl_close($ch); |
|
||||||
?> |
|
||||||
<table class="table table-striped table-hover"> |
|
||||||
<thead> |
|
||||||
<tr> |
|
||||||
<th>Entry Source</th><th>Redirect to</th><th>Append</th><th>Actions</th> |
|
||||||
</tr> |
|
||||||
</thead> |
|
||||||
<tbody> |
|
||||||
<?php |
|
||||||
foreach ($rows as $row) { |
|
||||||
$row->safe_append = htmlentities($row->append); |
|
||||||
echo "<tr>\n"; |
|
||||||
echo "<td><a target=\"_blank\" href=\"https://{$row->src}\">{$row->src}</a></td>"; |
|
||||||
echo "<td>{$row->site}</td>"; |
|
||||||
echo "<td>{$row->safe_append}</td>"; |
|
||||||
echo "<td><button name=\"delete\" data-id=\"{$row->_id}\">🚮</button><button name=\"edit\" data-id=\"{$row->_id}\">✎</button></td>"; |
|
||||||
echo "</tr>\n"; |
|
||||||
} |
|
||||||
?> |
|
||||||
</tbody> |
|
||||||
</table> |
|
||||||
<a class="btn btn-primary" href="add-site.php">Add another one</a> |
|
||||||
@ -1,19 +0,0 @@ |
|||||||
:root { |
|
||||||
--theme-primary: #7952B3; |
|
||||||
} |
|
||||||
|
|
||||||
nav.navbar-dark { |
|
||||||
background-color: var(--theme-primary); |
|
||||||
} |
|
||||||
|
|
||||||
body { |
|
||||||
min-height: 100vh; |
|
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
} |
|
||||||
|
|
||||||
textarea[name='append'] { |
|
||||||
background-color: #3b2c1d; |
|
||||||
color: #ccc; |
|
||||||
height: 130px; |
|
||||||
} |
|
||||||
@ -1,55 +0,0 @@ |
|||||||
/* https://www.joshwcomeau.com/css/custom-css-reset/ */ |
|
||||||
/* 1. Use a more-intuitive box-sizing model */ |
|
||||||
*, *::before, *::after { |
|
||||||
box-sizing: border-box; |
|
||||||
} |
|
||||||
|
|
||||||
/* 2. Remove default margin */ |
|
||||||
* { |
|
||||||
margin: 0; |
|
||||||
} |
|
||||||
|
|
||||||
/* 3. Enable keyword animations */ |
|
||||||
@media (prefers-reduced-motion: no-preference) { |
|
||||||
html { |
|
||||||
interpolate-size: allow-keywords; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
body { |
|
||||||
/* 4. Add accessible line-height */ |
|
||||||
line-height: 1.5; |
|
||||||
/* 5. Improve text rendering */ |
|
||||||
-webkit-font-smoothing: antialiased; |
|
||||||
} |
|
||||||
|
|
||||||
/* 6. Improve media defaults */ |
|
||||||
img, picture, video, canvas, svg { |
|
||||||
display: block; |
|
||||||
max-width: 100%; |
|
||||||
} |
|
||||||
|
|
||||||
/* 7. Inherit fonts for form controls */ |
|
||||||
input, button, textarea, select { |
|
||||||
font: inherit; |
|
||||||
} |
|
||||||
|
|
||||||
/* 8. Avoid text overflows */ |
|
||||||
p, h1, h2, h3, h4, h5, h6 { |
|
||||||
overflow-wrap: break-word; |
|
||||||
} |
|
||||||
|
|
||||||
/* 9. Improve line wrapping */ |
|
||||||
p { |
|
||||||
text-wrap: pretty; |
|
||||||
} |
|
||||||
h1, h2, h3, h4, h5, h6 { |
|
||||||
text-wrap: balance; |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
10. Create a root stacking context |
|
||||||
*/ |
|
||||||
#root, #__next { |
|
||||||
isolation: isolate; |
|
||||||
} |
|
||||||
@ -1,29 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
if [[ -z $2 ]] |
|
||||||
then |
|
||||||
echo "USAGE: $0 example.com example.tr.jit-tr.com" |
|
||||||
echo "" |
|
||||||
exit |
|
||||||
fi |
|
||||||
|
|
||||||
src=$2 |
|
||||||
site=https://$1 |
|
||||||
|
|
||||||
. config.ini |
|
||||||
|
|
||||||
PAYLOAD=$(cat <<EOF |
|
||||||
{ |
|
||||||
"src": "$src", |
|
||||||
"site": "$site", |
|
||||||
"append": "<script src=\"https://api.jit-tr.com/\"></script>" |
|
||||||
} |
|
||||||
EOF |
|
||||||
) |
|
||||||
|
|
||||||
curl -s -X 'POST' \ |
|
||||||
"$API_ENDPOINT_REDIRECTS" \ |
|
||||||
-H 'accept: application/json' \ |
|
||||||
-H "x-api-key: $API_KEY" \ |
|
||||||
-H 'Content-Type: application/json' \ |
|
||||||
-d "$PAYLOAD" |
|
||||||
|
|
||||||
@ -1,16 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
if [[ -z $1 ]] |
|
||||||
then |
|
||||||
echo "USAGE: $0 {uniqueid}" |
|
||||||
echo "" |
|
||||||
exit |
|
||||||
fi |
|
||||||
|
|
||||||
id=$1 |
|
||||||
|
|
||||||
. config.ini |
|
||||||
|
|
||||||
curl -s -X 'DEL' \ |
|
||||||
"$API_ENDPOINT_REDIRECTS/$id" \ |
|
||||||
-H 'accept: application/json' \ |
|
||||||
-H "x-api-key: $API_KEY" |
|
||||||
@ -1,10 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
. config.ini |
|
||||||
|
|
||||||
curl -s -X 'GET' \ |
|
||||||
"$API_ENDPOINT_REDIRECTS" \ |
|
||||||
"https://$DOMAIN/admin/api/redirects" \ |
|
||||||
-H 'accept: application/json' \ |
|
||||||
-H "x-api-key: $API_KEY" | jq . |
|
||||||
|
|
||||||
Loading…
Reference in new issue