mivita/app/Services/SyS/DomainSSL.php
Kevin Adametz bfa3bb1df4 08 2024
2024-08-05 12:05:24 +02:00

198 lines
6.6 KiB
PHP

<?php
namespace App\Services\SyS;
use Request;
use App\Models\UserShop;
use App\Http\Controllers\Api\KasController;
use App\Http\Controllers\Api\KasSLLController;
class DomainSSL
{
public static function show()
{
$user_shops = UserShop::limit(1000)->get();
$text = "";
$kas = new KasController();
//$domain = 'mivita.care';
// $ssl = KasSLLController::getApiSSLParameter();
$SubDomains = [];
$get_subdomains = $kas->action('get_subdomains');
foreach ($get_subdomains as $subdomain){
if(isset($subdomain['subdomain_name'])){
if(strpos($subdomain['subdomain_name'], 'www.') !== false){
continue;
}
if(strpos($subdomain['subdomain_name'], 'api.') !== false){
continue;
}
if(strpos($subdomain['subdomain_name'], 'checkout.') !== false){
continue;
}
$SubDomains[$subdomain['subdomain_name']] =
[
'ssl_certificate_sni' => $subdomain['ssl_certificate_sni'],
'php_version' => $subdomain['php_version'],
];
}else{
@dump($subdomain);
}
/* if($subdomain['ssl_certificate_sni'] !== "Y"){
$pra = array(
'hostname' => $subdomain['subdomain_name'],
);
$pra = array_merge($pra, $ssl);
$value = $kas->action('update_ssl', $pra);
$text .= $value;
}else{
if(isset($subdomain['ssl_certificate_sni_is_active'])){
$text .= $subdomain['ssl_certificate_sni_is_active'].'-is_active';
}else{
$text .= '-CHECK!';
}
}*/
//$text .= "\n";
}
$dobbleDomains = [];
foreach($user_shops as $user_shop){
$user_shop->hasSubdomain = false;
$user_shop->hasSSL = false;
$user_shop->PHPversion = "";
if(array_key_exists($user_shop->slug.'.mivita.care', $SubDomains)){
$user_shop->hasSubdomain = true;
$user_shop->hasSSL = $SubDomains[$user_shop->slug.'.mivita.care']['ssl_certificate_sni'] === 'Y' ? true : false;
$user_shop->PHPversion = $SubDomains[$user_shop->slug.'.mivita.care']['php_version'];
unset($SubDomains[$user_shop->slug.'.mivita.care']);
}
$dobbleDomains[$user_shop->user_id][$user_shop->id] = $user_shop->slug.'.mivita.care';
}
foreach($dobbleDomains as $key => $dobbleDomain){
if(count($dobbleDomain) === 1){
unset($dobbleDomains[$key]);
}
}
$data = [
'values' => $user_shops,
'text' => $text,
'SubDomains' => $SubDomains,
'dobbleDomains' => $dobbleDomains,
];
return view('sys.tools.domain-ssl', $data);
}
public static function store()
{
$data = Request::all();
if(isset($data['delete_sub_kas'])){
$kas = new KasController();
$pra = array(
'subdomain_name' => $data['delete_sub_kas'],
);
$value = $kas->action('delete_subdomain', $pra);
\Session()->flash('alert-success', 'subdomain: '.$value.' gelöscht');
}
if(isset($data['delete_user_shop'])){
$user_shop = UserShop::findOrFail($data['delete_user_shop']);
$subdomain_name = $user_shop->slug.'.mivita.care';
$user_shop->name = "delete".$user_shop->id;
$user_shop->slug = "delete".$user_shop->id;
$user_shop->save();
$user_shop->delete();
$kas = new KasController();
$pra = array(
'subdomain_name' => $subdomain_name,
);
$value = $kas->action('delete_subdomain', $pra);
\Session()->flash('alert-success', 'shop/subdomain: '.$value.' gelöscht');
}
if(isset($data['update_ssl'])){
//prüfen ob subdomain existiert
$user_shop = UserShop::findOrFail($data['update_ssl']);
$subdomain_name = $user_shop->slug.'.mivita.care';
$kas = new KasController();
$subdomain = $kas->action('get_subdomains', ['subdomain_name' => $subdomain_name]);
if(!isset($subdomain[0]['subdomain_name'])){ //not found
self::makeNewSubDomain($user_shop->slug);
\Session()->flash('alert-danger', 'subdomain: '.$subdomain_name.' nicht gefunden');
return back();
}else{
self::updateSubDomain($subdomain_name);
}
}
return back();
}
private static function updateSubDomain($subdomain_name){
$kas = new KasController();
$ssl = KasSLLController::getApiSSLParameter();
$pra = array(
'hostname' => $subdomain_name
);
$pra = array_merge($pra, $ssl);
$value = $kas->action('update_ssl', $pra);
\Session()->flash('alert-success', 'update SSL: '.$value.'');
return $value;
}
private static function makeNewSubDomain($slug){
$kas = new KasController();
$domain = 'mivita.care';
//check if exisist
$subdomains = $kas->action('get_subdomains');
foreach ($subdomains as $subdomain){
if(!isset($subdomain['subdomain_name'])){
continue;
}
$sub = str_replace(".".$domain, '', $subdomain['subdomain_name']);
if($sub == $slug){
\Session()->flash('alert-danger', __('shop.error_subdomain_exists'));
return;
}
}
//add
$full_subdomain_name = $slug.".".$domain;
$pra = array(
'subdomain_name' => $slug,
'domain_name' => $domain,
'subdomain_path' => '/mein.mivita.care/public/',
'php_version' => config('app.php_version'),
//'ssl_proxy' => 'Y',
//'redirect_status' => 0
);
$add_subdomain = $kas->action('add_subdomain', $pra);
if($add_subdomain == $full_subdomain_name){
\Session()->flash('alert-success', 'Add Subdomain: '.$add_subdomain.'');
return $add_subdomain;
}
\Session()->flash('alert-danger', 'Fehler: '.$add_subdomain.'');
return $add_subdomain;
}
}