From 757c0b813806a02bc2c3483bb02ad19bd05a2c4c Mon Sep 17 00:00:00 2001 From: David Ramos Date: Sat, 16 Dec 2017 17:38:04 +0100 Subject: [PATCH] =?UTF-8?q?Creaci=C3=B3n=20del=20subdominio=20y=20su=20sit?= =?UTF-8?q?io=20web=20con=20los=20servidores=20y=20sus=20ips=20asignadas?= =?UTF-8?q?=20correctamente.=20Mejora=20de=20las=20comprobaciones=20para?= =?UTF-8?q?=20la=20creaci=C3=B3n=20del=20subdominio.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- new_service_webdns.php | 172 ++++++++++++++++++++++++++++------------- 1 file changed, 119 insertions(+), 53 deletions(-) diff --git a/new_service_webdns.php b/new_service_webdns.php index bf9b827..20bc3f8 100755 --- a/new_service_webdns.php +++ b/new_service_webdns.php @@ -193,6 +193,7 @@ class page_action extends tform_actions { public $subdominio; public $es_subdominio = false; public $subdom_error = false; + public $dominio_error = false; public $no_ip = false; //Campos para PDF @@ -553,25 +554,30 @@ class page_action extends tform_actions { $patronP2 = '/(\.$)/'; $patronP3 = '/(\.\.+)/'; $patronP4 = '/(\.[[:alpha:]]*)$/';*/ - + //Se comprueba que no tenga 3 w "www" al principio del nombre del dominio o subdomino $encontradoWWW = preg_match($patronWWW, $subdom, $coincidencias); if($encontradoWWW){ $app->tform->errorMessage = $app->tform->wordbook['error_dominio_www']; return; } + //print "
"; print_r($subdom); print "
\n"; + //print "
"; print(substr_count($subdom,".")); print "
\n"; //Si el dominio tiene mas de dos puntos, es incorrecto - if (substr_count($subdom,".") > 2) { - + if(substr_count($subdom,".") > 2) { + //$app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos']; + $this->es_subdominio = false; + $this->dominio_error = true; + //print "
"; print_r($subdom . " hola " .$this->es_subdominio ); print "
\n"; $app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos']; - return; + //return; - } else if(substr_count($subdom,".") == 2){ + }else if(substr_count($subdom,".") == 2){ $this->encontrado = preg_match($patronSubDominos, $subdom, $coincidencias); //print "
"; print_r($coincidencias); print "
\n"; - $this->subdominio = $coincidencias[1]; + $this->subdominio = $coincidencias[0]; $this->dominio = $coincidencias[2]; //print "Subdomino: " . $this->subdomino . "

\n Dominio: " . $this->domino; @@ -591,6 +597,12 @@ class page_action extends tform_actions { global $app, $conf; $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); + + //IMPORTANTE. CON ESTA LLAMADA REALIZO LOS PASOS SIGUIENTES A ELLA. COMPROBAR. NO VA. + /*$capturaGroupClientVista = $app->db->queryOneRecord( + "SELECT groupid, client_id FROM sys_group + WHERE client_id = ".$app->functions->intval($fields['client_group_id']));*/ + //IMPORTANTE. //Con la selección del cliente o admin en la vista. //Tomamos el grupo del cliente o admin, se toma este valor y se captura el client_id y groupid de la tabla @@ -628,29 +640,66 @@ class page_action extends tform_actions { global $app, $conf; $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); - - //print "
"; print_r($campoSubDominio); print "
\n"; + //COMO LE PASO EL DOMINIO CORRECTO NO ES NECESARIO PONER EL % EN LA SQL AÑADO EL PUNTO. + //EL PROBLEMA ES QUE CON UN DOMINIO .COM TOMA POR VALIDO UN .CO POR EL % + //NO --> ('SELECT server_id, name FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"'); + $existeDominioParaSubDominio = $app->db->queryOneRecord( + 'SELECT server_id, name FROM dns_rr WHERE name LIKE "'.$this->dominio.'."'); + /*'SELECT domain_id, domain FROM web_domain + WHERE domain = "'.$campoSubDominio.'"');*/ + +// print "
En crearSubDominio campo que se le pasa subdominio es: "; print_r($campoSubDominio); print "
\n"; //Compruebo que el subdominio no existe consultando la tabla web_domain. - $existeSubDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM web_domain WHERE domain = "'.$campoSubDominio.'"'); + $existeSubDominioWeb = $app->db->queryOneRecord( + 'SELECT domain_id, domain FROM web_domain + WHERE domain = "'.$campoSubDominio.'"'); + + //Compruebo que el subdominio no existe consultando la tabla dns_rr + $existeSubDominioTipoA = $app->db->queryOneRecord( + 'SELECT name, type FROM dns_rr + WHERE name = "'.$campoSubDominio.'" AND type = "A"'); + + if(!$existeDominioParaSubDominio['name']){ + $this->subdom_error = true; + $app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre']; +// print "
Error En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "
\n"; + $this->onError(); + return; + } +// print "
En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "
\n"; //print '
El Sub existe '. $existeSubDominio['domain'];
-		if($existeSubDominio){
-		    $this->subdom_error = true;
-		    $app->tform->errorMessage = $app->tform->wordbook['error_subdominio_existe'];
-		    $this->onError();
-		    return;
+		if($existeSubDominioWeb['domain']){
+			$this->subdom_error = true;
+			$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
+			$this->onError();
+			return $this->subdom_error;
 		}
-		//$this->controlUserGrupoId();
-		$servidores = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver, web_servers FROM client WHERE client_id = ". $this->cli_id);			
-		$dns_servidor = $servidores['default_dnsserver'];
-		$web_servidor = $servidores['web_servers'];
-		print "
Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id;
-		//print "
El dominio es: " . $this->dominio;
+
+		if($existeSubDominioTipoA['name']){
+			$this->subdom_error = true;
+			$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
+			$this->onError();
+			return $this->subdom_error;
+		}
+		
+		$this->controlUserGrupoId();
+		/*$servidores = $app->db->queryOneRecord(
+			"SELECT client_id, default_dnsserver, default_webserver, web_servers
+				FROM client WHERE client_id = ". $this->cli_id);*/
+
+		//$dns_servidor = $servidores['default_dnsserver'];
+		//$web_servidor = $servidores['web_servers'];
+		//print "
Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id;
+//		print "
El dominio es: " . $this->dominio;
 		//$camDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM domain WHERE domain = "'.$this->dominio.'"');
 		$camDominio = $app->db->queryOneRecord('SELECT origin FROM dns_soa WHERE origin LIKE "'.$this->dominio.'%"');
+		//$camDominio = $app->db->queryOneRecord('SELECT origin FROM dns_soa WHERE origin LIKE "'.$campoSubDominio.'%"');
 		$camDnsRR = $app->db->queryOneRecord('SELECT server_id, zone FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"');
 		
 		//Para los registros tipo A la ip tiene que ser tipo IPv4
-		$camServIP = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE server_id = ".$camDnsRR['server_id']." AND ip_type='IPv4'");
+		$camServIP = $app->db->queryOneRecord(
+			"SELECT ip_address FROM server_ip
+				WHERE server_id = ".$camDnsRR['server_id']." AND ip_type='IPv4'");
 		
 		//print_r($camDominio);
 		//print_r($camDnsRR);
@@ -680,17 +729,16 @@ class page_action extends tform_actions {
 				'serial' => '1',
 			);
 
-			$this->controlUserGrupoId();
-			echo ('El client_id GLOBAL ' . $this->cli_id . " 
"); + //echo ('
El client_id GLOBAL ' . $this->cli_id . "
"); // client group id /*$res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id'])); $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);//$res['groupid']; echo ('El client group id seleccion ' . $client_group_id . "
"); echo ('El groupid de la tabla sys_group ' . $res['groupid'] . " ");*/ - print "
"; print_r($paramSubDominios); print "
\n"; + //print "
"; print_r($paramSubDominios); print "
\n"; //Inserto en bbdd usando la clase remoto que se la he pasado en parámetros de la función //$resultado = $remoto->insert_query('../dns/form/dns_a.tform.php', $fields['client_id'], $paramSubDominios); - //$resultado = $remoto->insert_query('form/dns_a_webdns.tform.php', $this->cli_id, /*$fields['client_group_id'],*/ $paramSubDominios); + $resultado = $remoto->insert_query('form/dns_a_webdns.tform.php', $this->cli_id, /*$fields['client_group_id'],*/ $paramSubDominios); echo '

Se ha dado de alta Web y Subdominio, '.$this->subdominio.', ¡Correctamente!


'; @@ -705,7 +753,7 @@ class page_action extends tform_actions { $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); //Captura del servidor id - if($this->id > 0) { +/* if($this->id > 0) { $server_id = $this->dataRecord["server_id"]; } else { // Get the first server ID @@ -713,7 +761,7 @@ class page_action extends tform_actions { $server_id = $tmp['server_id']; //$this->elServidor = $server_id; } - +*/ /*echo ('Lo seleccionado ' . $fields['client_group_id'] . "
"); echo ('Tabla sys_group --> client id ' . $this->cli_id . "
"); echo ('Tabla sys_group --> groupid ' . $this->cli_grupo_id . "
"); @@ -726,29 +774,43 @@ class page_action extends tform_actions { //Comprobamos que el resultado para el cliente seleccionado no esta vacío, //si lo esta tomamos los datos del cliente id 0 //if(!$dns_ip_servidor_ipv6){ - $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv4'"); - $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv6'"); +// $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv4'"); +// $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv6'"); /*echo '

Valor de la consulta '.$dns_ip_servidor_ipv6[ip_address].' '; echo '

Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/ //} - $dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_group_id'])); +/* $dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_group_id'])); $clienteID = $dns_servidor['client_id']; - - $res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id'])); - $client_group_id = $res['groupid']; +*/ +// $res = $app->db->queryOneRecord("SELECT groupid, client_id FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id'])); +// $client_group_id = $res['groupid']; + //$client_id = $res['client_id']; + //echo('Seleccion es '.$app->functions->intval($fields['client_group_id']) . ' campos groupid ' . $client_group_id. ' campos client_id ' .$client_id); //echo ('El server es: ' . $dns_servidor['default_webserver']); + $this->tieneServidorIPs(); + $this->controlUserGrupoId(); + + /* print "
DNS SERVER ";print_r($this->dns_serv);print "
\n"; + print "
WEB SERVER ";print_r($this->web_serv);print "
\n"; + print "
IP4 DNS ";print_r($this->ip4_servidor_dns);print "
\n"; + print "
IP6 DNS ";print_r($this->ip6_servidor_dns);print "
\n"; + print "
IP4 WEB ";print_r($this->ip4_servidor_web);print "
\n"; + print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n"; + print "
IP6 WEB LA OTRA ";print_r($this->ip6_ultima['ip_address']);print "
\n"; + +*/ // add site $paramsite = array( -// "sys_userid" => $this->sys_usuario_id, -// "sys_groupid" => $this->cli_grupo_id, + //"sys_userid" => $this->sys_usuario_id, + //"sys_groupid" => $this->cli_grupo_id, 'type' => 'vhost', 'domain' => $fields['domain'], //$this->subdominio, - 'server_id' => $server_id,//$dns_servidor['default_webserver'], + 'server_id' => $this->web_serv, //$server_id,//$dns_servidor['default_webserver'], 'ip_address' => '*', //$dns_ip_servidor['ip_address'], - 'ipv6_address' => $dns_ip_servidor_ipv6['ip_address'], + 'ipv6_address' =>$this->ip6_servidor_web['ip_address'], //$dns_ip_servidor_ipv6['ip_address'], 'traffic_quota' => '-1', 'hd_quota' => '0', 'cgi' => 'y', @@ -782,7 +844,7 @@ class page_action extends tform_actions { 'system_user' => '-', 'system_group' => '-', 'log_retention' => 30, - 'client_group_id' => $client_group_id, + 'client_group_id' => $this->cli_grupo_id, //$client_group_id, ); //$app->uses('remoting_lib'); @@ -802,16 +864,15 @@ class page_action extends tform_actions { //$app->tform->loadFormDef($tform_def_file2); //El último parámetro es para lanzar un evento que llama a la función on_after_insert que prepara //los campos document_root, system_user y system_group - $site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_group_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert'); - - //$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $this->sys_usuario_id, $paramsite, 'sites:web_vhost_domain:on_after_insert'); + //$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_group_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert'); + $site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $this->sys_usuario_id, $paramsite, 'sites:web_vhost_domain:on_after_insert'); //print '
ID sitio web del subdominio --> ' . $site_id;
 	}
 
 	public $ip4_servidor_dns;
 	public $ip6_servidor_dns;
-	public $ip4_servidor;
-	public $ip6_servidor;
+	public $ip4_servidor_web;
+	public $ip6_servidor_web;
 	public $dns_serv;
 	public $web_serv;
 
@@ -1114,12 +1175,12 @@ class page_action extends tform_actions {
 			echo '

Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/ // } -print "
DNS SERVER ";print_r($this->dns_serv);print "
\n"; +/*print "
DNS SERVER ";print_r($this->dns_serv);print "
\n"; print "
WEB SERVER ";print_r($this->web_serv);print "
\n"; print "
IP4 DNS ";print_r($this->ip4_servidor_dns);print "
\n"; print "
IP6 DNS ";print_r($this->ip6_servidor_dns);print "
\n"; print "
IP4 WEB ";print_r($this->ip4_servidor_web);print "
\n"; -print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n"; +print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n";*/ //Si el servidor es el que tiene asignado el cliente o el de admin por defecto, le damos esta ip4 if($this->dns_serv && $this->ip4_servidor_dns){ @@ -1318,7 +1379,7 @@ print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n"; ); //print 'Valores: ' . $dns_ip_servidor_ipv6 . " " . $formulario . " Parametros: " ; - print "
"; print_r($paramsite); print "
\n"; + //print "
"; print_r($paramsite); print "
\n"; /*print '
 cliente id ' . $fields['client_id'];
 		print "
";print_r($fields);print "
\n";*/ @@ -1364,7 +1425,7 @@ print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n"; echo ('Tabla sys_user --> userid ' . $this->sys_usuario_id . "
"); echo ('Tabla sys_user --> sys_groupid ' . $this->sys_grupo_id . "
");*/ - + //print "Subdomino: " . $this->subdomino . "

\n Dominio: " . $this->domino; if($this->comprobarSubDominios($fields['domain'])){ $this->crearSubDominio($remote, $fields['domain']); @@ -1374,18 +1435,23 @@ print "
IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n"; } } else { - - $this->crearDnsSitioWeb($remote); - //$variablePHP = ""; - //Si todo va bien, el resultado de la web y dns - echo '

- Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente! + if(!$this->dominio_error){ + $this->crearDnsSitioWeb($remote); + //$variablePHP = ""; + //Si todo va bien, el resultado de la web y dns + echo '

+ Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente!


'; //IMPORTANTE, es necesario cargar nuestro formulario para poder ejecutar la función que crea //la base de datos y el ftp ya que hay datos que tomamos de él antes de ejecutarla. $app->tform->loadFormDef('form/new_service_webdns.tform.php'); //$this->crearBaseDatosFtp($remote); + }else{ + $this->onError(); + return; + } + } } }