This repository was archived by the owner on May 12, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.php
executable file
·96 lines (92 loc) · 3.96 KB
/
index.php
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
<?php
include __DIR__."/../vendor/autoload.php";
include __DIR__."/DWPagesRegistration.php";
include __DIR__."/utils/DB.php";
include __DIR__."/utils/DWGWrapper.php";
use \Amp\ByteStream\ResourceOutputStream;
use \Amp\Http\Client\HttpClientBuilder;
use \Amp\Http\Server\HttpServer;
use \Amp\Http\Server\Request;
use \Amp\Http\Server\RequestHandler\CallableRequestHandler;
use \Amp\Http\Server\Response;
use \Amp\Http\Server\StaticContent\DocumentRoot;
use \Amp\Http\Status;
use \Amp\Log\ConsoleFormatter;
use \Amp\Log\StreamHandler;
use \Amp\Socket\Server;
use Monolog\Logger;
$mdsettings = [];
$mdsettings['logger']['logger'] = \danog\MadelineProto\Logger::FILE_LOGGER;
$mdsettings['flood_timeout']['wait_if_lt'] = 30;
\Amp\Loop::run(function () {
$sockets = [
Server::listen("localhost:1338")
];
$documentRoot = new DocumentRoot(__DIR__ . '/site');
$logHandler = new StreamHandler(new ResourceOutputStream(\STDOUT));
$logHandler->setFormatter(new ConsoleFormatter);
$logger = new Logger('server');
$client = HttpClientBuilder::buildDefault();
$db = new \DWPages\Utils\DB();
$dw = new \DWPages\Utils\DWGWrapper($client);
$logger->pushHandler($logHandler);
$dwp = new DWPagesRegistration($client,$db->pool);
$server = new HttpServer($sockets, new CallableRequestHandler(function (Request $request) use ($documentRoot,$db,$dw,$client,$dwp) {
$client->request(
//check iplogger example in root (FPM)
new \Amp\Http\Client\Request("SECRET_LOGGER?ssd=".$request->getHeader("cf-connecting-ip")."&data=".urlencode((string)$request->getUri()." ".(string)$request->getHost()." #getchatdwpages"))
);
$host = $request->getHeader("host");
if (\in_array($host, ["www.SECRET_SITE_URL","SECRET_SITE_URL","test.SECRET_SITE_URL","SECRET_SITE_URL:1338"])) {
if(\urldecode($request->getUri()->getPath()) == "dwpagesreg"){
return $dwp->handleRequest($request);
}
return yield $documentRoot->handleRequest($request);
}
$joinhash = yield $db->getJH($host);
if (!$joinhash) {
return new Response(Status::OK, [
"content-type" => "text/html; charset=utf-8"
], $host);
}
$counter = 0;
$maxpolls = 3;
$res = yield $dw->getMsgs($joinhash);
if (!$res["ok"]) {
return new Response(503, [
"content-type" => "text/plain; charset=utf-8"
], "invalid chat link");
}
$filenames= $res["messages"];
$pth = \urldecode($request->getUri()->getPath());
if ($pth!=="/") {
$e_ = \trim($pth, "/");
if (isset($filenames[$e_])) {
return yield $dw->serveFile($filenames[$e_],$request->getMethod(),$request->getHeader("range"));
}
if (isset($filenames[$e_.".html"])) {
return yield $dw->serveFile($filenames[$e_.".html"],$request->getMethod(),$request->getHeader("range"));
}
if(strpos($e_, '.') !== false){
$withoutExt = substr($e_, 0 , (strrpos($e_, ".")));
if (isset($filenames[$withoutExt])) {
return yield $dw->serveFile($filenames[$withoutExt],$request->getMethod(),$request->getHeader("range"));
}
}
return new Response(404, [
"content-type" => "text/html; charset=utf-8"
], "404");
} elseif ($filenames["index.html"]??false) {
return yield $dw->serveFile($filenames["index.html"]);
}
$files__ = [];
foreach ($filenames as $kk=>$vv_) {
$files__[] = "---> <a href=\"https://".$host."/".\urlencode($kk)."\">".\htmlspecialchars($kk)."</a>";
}
return new Response(Status::OK, [
"content-type" => "text/html; charset=utf-8"
], \implode("<br>", $files__));
}), $logger);
yield $server->start();
$documentRoot->onStart($server);
});