12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace app\Controllers;
- use app\Exceptions\InvalidRequestException;
- use app\Exceptions\UnauthenticatedException;
- use app\Logger;
- use app\Types\DatabaseObjects\ContactTracker;
- use app\Types\WebhookMessage;
- use Pecee\SimpleRouter\SimpleRouter;
- use app\Interfaces\IRouteController;
- use app\Hajeebtok;
- class HomeController implements IRouteController
- {
- public static function redirect(): void {
- if(Hajeebtok::$Config->GetByDotKey("Instance.DebugMode")) return;
- response()->redirect("https://" . Hajeebtok::$Config->GetByDotKey("Instance.URL"));
- }
- public static function contact(): string {
- $message = input("message");
- $email = input("email");
- $name = input("name");
- // sanity checks
- if(empty($message) || empty($email) || empty($name)) throw new InvalidRequestException(400);
- if(strlen($message) > 2000 || strlen($email) > 100 || strlen($name) > 100) throw new InvalidRequestException(400);
- $client_ip = get_client_ip();
- $contact = new ContactTracker(ip: $client_ip);
- if($contact->Exists()) {
- $contact->Load();
- Logger::Debug(time());
- Logger::Debug($contact->date_sent);
- Logger::Debug(strval(time() - $contact->date_sent));
- if(time() - $contact->date_sent < Hajeebtok::$Config->GetByDotKey("Instance.ContactTimeout")) {
- throw new InvalidRequestException(429); // didnt wait atleast 1 hour :-1:
- }
- }
- $contact = new ContactTracker(name: $name, email: $email, message: $message, ip: $client_ip);
- $contact->Save();
- $webhook = new WebhookMessage(url: Hajeebtok::$Config->GetByDotKey("Instance.PrivateDiscordWebhookURL"));
- $webhook->SetContent("this is ground control to major tom");
- $webhook->AddEmbed([
- "description" => $message,
- "fields" => [],
- "title" => "New message from $name",
- "footer" => [
- "text" => $email,
- ],
- "author" => [
- "name" => $client_ip,
- ],
- "color" => 16711680 // red
- ]);
- $webhook->Send();
- CORSHelper();
- return api_json([
- "message" => "sent successfully. we will try to answer in less than 15 days."
- ]);
- }
- public static function RegisterRoutes(): void
- {
- SimpleRouter::group([
- "prefix" => "/",
- ], function () {
- SimpleRouter::get("/", [HomeController::class, "redirect"]);
- SimpleRouter::post("/contact", [HomeController::class, "contact"]);
- SimpleRouter::options("/contact", "CORSHelper");
- });
- }
- }
|