user()->subscribedToProduct(config('app.plans')[0]['product_id']); Session::put('isSubscribed', $subscriptionCheck); } public function generateBulk() { $this->validate([ 'bulkCount' => 'required|integer|min:1|max:500', ]); if (count($this->bulkEmails) > 0) { $this->bulkEmails = []; } for ($i = 0; $i < $this->bulkCount; $i++) { $this->bulkEmails[] = $this->randomEmail(); } } public function downloadBulk() { // Ensure there's something to download if (empty($this->bulkEmails) || !is_array($this->bulkEmails)) { return; } $filename = 'bulk_emails_' . now()->format('Ymd_His') . '.txt'; $content = implode(PHP_EOL, $this->bulkEmails); return response()->streamDownload(function () use ($content) { echo $content; }, $filename); } private function randomEmail(): string { $domain = $this->getRandomDomain(); if ($domain == "gmail.com" || $domain == "googlemail.com") { $uname = $this->getRandomGmailUser(); $uname_len = strlen($uname); $len_power = $uname_len - 1; $combination = pow(2,$len_power); $rand_comb = mt_rand(1,$combination); $formatted = implode(' ',str_split($uname)); $uname_exp = explode(' ', $formatted); $bin = intval(""); for($i=0; $i<$len_power; $i++) { $bin .= mt_rand(0,1); } $bin = explode(' ', implode(' ',str_split(strval($bin)))); $email = ""; for($i=0; $i<$len_power; $i++) { $email .= $uname_exp[$i]; if($bin[$i]) { $email .= "."; } } $email .= $uname_exp[$i]; $gmail_rand = mt_rand(1,10); if($gmail_rand > 5) { $email .= "@gmail.com"; } else { $email .= "@googlemail.com"; } return $email; } else { return $this->generateRandomUsername().'@'.$domain; } } private function generateRandomUsername(): string { $start = json_decode(config('app.settings.configuration_settings'))->random_username_length_min ?? 0; $end = json_decode(config('app.settings.configuration_settings'))->random_username_length_max ?? 0; if ($start == 0 && $end == 0) { return $this->generatePronounceableWord(); } return $this->generatedRandomBetweenLength($start, $end); } private function generatedRandomBetweenLength($start, $end): string { $length = rand($start, $end); return $this->generateRandomString($length); } private function getRandomDomain() { $domains = json_decode(config('app.settings.configuration_settings'))->premium_domains ?? []; $count = count($domains); return $count > 0 ? $domains[rand(1, $count) - 1] : ''; } private function getRandomGmailUser() { $gmailusername = json_decode(config('app.settings.configuration_settings'))->premium_gmailUsernames ?? []; $count = count($gmailusername); return $count > 0 ? $gmailusername[rand(1, $count) - 1] : ''; } private function generatePronounceableWord(): string { $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones $v = 'aeiou'; //vowels $a = $c . $v; //both $random = ''; for ($j = 0; $j < 2; $j++) { $random .= $c[rand(0, strlen($c) - 1)]; $random .= $v[rand(0, strlen($v) - 1)]; $random .= $a[rand(0, strlen($a) - 1)]; } return $random; } private function generateRandomString($length = 10): string { $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function render() { if (Session::get('isSubscribed')) { return view('livewire.dashboard.bulk')->layout('components.layouts.dashboard'); } else { return view('livewire.dashboard.not-subscribed')->layout('components.layouts.dashboard'); } } }