/** * Store a newly created DNS Record of Zone in storage. * * @param Zone $zone * @param DnsRequest $request * @return Response */ public function storeDns(Zone $zone, DnsRequest $request) { try { $datas = $request->except(['_token']); if ('@' === $datas['name']) { $datas['name'] = $zone->name; } else { if (strpos($request->name, '.') !== false) { return back()->withInput()->withErrors([trans('admin.zone.invalid_name')]); } } $cfDns = Cloudflare::createDnsRecord($zone, $datas); $dnsRecord = $request->all(); $dnsRecord['name'] = $datas['name']; $dnsRecord['cf_id'] = $cfDns->id; $dnsRecord['zone_id'] = $zone->id; $this->dnsRepository->create($dnsRecord); // add to blacklist domain $isBlacklisted = $this->blacklistRepository->findOneByNameAndZone($datas['name'], $zone); if (!$isBlacklisted) { $blacklist = ['name' => $datas['name'], 'zone_id' => $zone->id]; $this->blacklistRepository->create($blacklist); } return redirect($this->route('zone.edit', ['zone' => $zone->id]))->with('success', $this->returnMessage('store', 'dns')); } catch (CloudflareException $e) { return back()->withInput()->withErrors([$e->getCode() . ' - ' . trans($e->getMessage())]); } catch (\Exceptions $e) { return back()->withInput()->withErrors([trans('admin.error.unknown_error')]); } }
/** * Show the form for creating a new DNS Record for Domain. * * @param string $domainName * @param DnsRequest $request * @return Response */ public function postCreateDns($domainName, DnsRequest $request) { // validate domain name $domain = Domain::isDomainValid($domainName); if (false === $domain) { abort(404); } // check dns total, if dns_per_domain = 0 (unlimited) then dont check $dnsTotal = $domain->dnsRecords->count(); if (Setting::get('dns_per_domain') > 0) { if ($dnsTotal > Setting::get('dns_per_domain')) { return back()->withInput()->withErrors([trans('front.dns.reach_max_domain_dns')]); } } try { $datas = $request->except(['_token']); if ('@' === $datas['name']) { $datas['name'] = $domainName; } else { $datas['name'] .= '.' . $domainName; } $cfDns = Cloudflare::createDnsRecord($domain->zone, $datas); $dnsRecord = $request->all(); $dnsRecord['name'] = $datas['name']; $dnsRecord['cf_id'] = $cfDns->id; $dnsRecord['zone_id'] = $domain->zone->id; $dnsRecord['user_domain_id'] = $domain->id; $this->dnsRepository->create($dnsRecord); return redirect(route('user.domain.manage', ['domainName' => $domainName]))->with('success', trans('front.dns.success_add')); } catch (CloudflareException $e) { return back()->withInput()->withErrors([$e->getCode() . ' - ' . trans($e->getMessage())]); } catch (\Exceptions $e) { return back()->withInput()->withErrors([trans('front.error.please_contact_admin')]); } }