-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.php
More file actions
135 lines (121 loc) · 6.16 KB
/
index.php
File metadata and controls
135 lines (121 loc) · 6.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
$config = require 'config.php';
$domains = $config['domains'];
$version = $config['version'];
$requestUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$scriptName = $_SERVER['SCRIPT_NAME'];
$path = str_replace($scriptName, '', $requestUri);
$path = trim($path, '/');
$parts = explode('/', $path);
$isLegacyJson = in_array($path, ['json', 'index.php/json']) || (isset($_GET['format']) && $_GET['format'] === 'json') || (isset($_GET['output']) && $_GET['output'] === 'json') || (isset($_GET['type']) && ($_GET['type'] === 'json' || $_GET['type'] === 'raw'));
if ($isLegacyJson) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'version' => $version,
'domains' => $domains,
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
exit;
}
if (isset($parts[0]) && $parts[0] === 'api') {
header('Content-Type: application/json; charset=utf-8');
$action = $parts[1] ?? null;
switch ($action) {
case 'domains':
echo json_encode([
'status' => 'success',
'version' => $version,
'domains' => $domains
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
break;
case 'check':
$targetDomain = $parts[2] ?? null;
if (!$targetDomain) {
http_response_code(400);
echo json_encode(['error' => 'No domain specified. Usage: /api/check/example.com']);
} else {
$exists = in_array($targetDomain, $domains);
echo json_encode([
'domain' => $targetDomain,
'exists' => $exists,
'message' => $exists ? 'Domain is registered.' : 'Domain not found.'
], JSON_PRETTY_PRINT);
}
break;
default:
echo json_encode([
'message' => 'index.MTEX.dev API',
'version' => $version,
'available_functions' => [
'/api/domains' => 'Returns a list of all registered domains.',
'/api/check/{domain}' => 'Checks if a specific domain exists in the directory.',
'/json' => 'Legacy endpoint for domain manifest.'
]
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
break;
}
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Central directory and manifest of all mtex.dev domains and nodes.">
<meta name="keywords" content="mtex, mtex.dev, domain, directory, nodes, manifest, index">
<meta name="author" content="MTEX.dev">
<meta property="og:image" content="https://github.com/MTEXdotDev.png">
<meta property="twitter:image" content="https://github.com/MTEXdotDev.png">
<link rel="icon" type="image/png" href="http://github.com/MTEXdotDev.png" />
<link rel="apple-touch-icon" href="https://github.com/MTEXdotDev.png">
<link rel="stylesheet" href="style.css">
<title>MTEX.dev // Domain Directory</title>
</head>
<body class="site-wrapper">
<div class="container">
<header class="header">
<img src="https://github.com/MTEXdotDev.png" alt="Logo" class="logo">
<div class="header-text">
<h1 class="title">MTEX.dev</h1>
<p class="version-info">
Domain Directory - <span class="version-tag">v<?php echo htmlspecialchars($version); ?></span>
</p>
</div>
</header>
<main class="content">
<ul class="domain-list">
<?php foreach ($domains as $domain): ?>
<li class="domain-item">
<a href="https://<?php echo htmlspecialchars($domain); ?>" class="domain-link">
<code class="domain-name"><?php echo htmlspecialchars($domain); ?></code>
<span class="arrow">→</span>
</a>
</li>
<?php endforeach; ?>
</ul>
</main>
<footer class="footer">
<div class="footer-section">
<a href="https://github.com/MTEXdotDev/index.mtex.dev" class="github-link" aria-label="GitHub">
<svg class="github-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 98 96">
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"/>
</svg>
</a>
</div>
<nav class="footer-nav">
<a href="https://legal.mtex.dev/imprint" class="footer-link">Imprint</a>
<span class="dot">•</span>
<a href="https://legal.mtex.dev/privacy" class="footer-link">Privacy</a>
<span class="dot">•</span>
<a href="https://status.mtex.dev" class="footer-link">Status</a>
<span class="dot">•</span>
<a href="https://github.mtex.dev" class="footer-link">GitHub</a>
</nav>
<div class="footer-info">
<p class="footer-text">Powered by MTEX.dev</p>
<p class="version-display">v<?php echo htmlspecialchars($version); ?></p>
</div>
</footer>
</div>
</body>
</html>