| @@ -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 "<pre>"; print_r($subdom); print "</pre>\n"; | |||
| //print "<pre>"; print(substr_count($subdom,".")); print "</pre>\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 "<pre>"; print_r($subdom . " hola " .$this->es_subdominio ); print "</pre>\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 "<pre>"; print_r($coincidencias); print "</pre>\n"; | |||
| $this->subdominio = $coincidencias[1]; | |||
| $this->subdominio = $coincidencias[0]; | |||
| $this->dominio = $coincidencias[2]; | |||
| //print "Subdomino: " . $this->subdomino . "</p>\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 "<pre>"; print_r($campoSubDominio); print "</pre>\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 "<pre>En crearSubDominio campo que se le pasa subdominio es: "; print_r($campoSubDominio); print "</pre>\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 "<pre>Error En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "</pre>\n"; | |||
| $this->onError(); | |||
| return; | |||
| } | |||
| // print "<pre>En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "</pre>\n"; | |||
| //print '<pre>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 "<pre>Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id; | |||
| //print "<pre>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 "<pre>Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id; | |||
| // print "<pre>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 . " <br>"); | |||
| //echo ('<br>El client_id GLOBAL ' . $this->cli_id . " <br>"); | |||
| // 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 . " <br>"); | |||
| echo ('El groupid de la tabla sys_group ' . $res['groupid'] . " ");*/ | |||
| print "<pre>"; print_r($paramSubDominios); print "</pre>\n"; | |||
| //print "<pre>"; print_r($paramSubDominios); print "</pre>\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 '<br><div class="alert alert-success"><br> | |||
| Se ha dado de alta Web y Subdominio, <b>'.$this->subdominio.'</b>, ¡Correctamente! | |||
| <br><br></div></br>'; | |||
| @@ -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'] . " <br>"); | |||
| echo ('Tabla sys_group --> client id ' . $this->cli_id . " <br>"); | |||
| echo ('Tabla sys_group --> groupid ' . $this->cli_grupo_id . " <br>"); | |||
| @@ -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 '<br><br>Valor de la consulta '.$dns_ip_servidor_ipv6[ip_address].' '; | |||
| echo '<br><br>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 "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n"; | |||
| print "<pre>WEB SERVER ";print_r($this->web_serv);print "</pre>\n"; | |||
| print "<pre>IP4 DNS ";print_r($this->ip4_servidor_dns);print "</pre>\n"; | |||
| print "<pre>IP6 DNS ";print_r($this->ip6_servidor_dns);print "</pre>\n"; | |||
| print "<pre>IP4 WEB ";print_r($this->ip4_servidor_web);print "</pre>\n"; | |||
| print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n"; | |||
| print "<pre>IP6 WEB LA OTRA ";print_r($this->ip6_ultima['ip_address']);print "</pre>\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 '<pre>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 '<br><br>Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/ | |||
| // } | |||
| print "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n"; | |||
| /*print "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n"; | |||
| print "<pre>WEB SERVER ";print_r($this->web_serv);print "</pre>\n"; | |||
| print "<pre>IP4 DNS ";print_r($this->ip4_servidor_dns);print "</pre>\n"; | |||
| print "<pre>IP6 DNS ";print_r($this->ip6_servidor_dns);print "</pre>\n"; | |||
| print "<pre>IP4 WEB ";print_r($this->ip4_servidor_web);print "</pre>\n"; | |||
| print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n"; | |||
| print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\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 "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n"; | |||
| ); | |||
| //print 'Valores: ' . $dns_ip_servidor_ipv6 . " " . $formulario . " Parametros: " ; | |||
| print "<pre>"; print_r($paramsite); print "</pre>\n"; | |||
| //print "<pre>"; print_r($paramsite); print "</pre>\n"; | |||
| /*print '<pre> cliente id ' . $fields['client_id']; | |||
| print "<pre>";print_r($fields);print "</pre>\n";*/ | |||
| @@ -1364,7 +1425,7 @@ print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n"; | |||
| echo ('Tabla sys_user --> userid ' . $this->sys_usuario_id . " <br>"); | |||
| echo ('Tabla sys_user --> sys_groupid ' . $this->sys_grupo_id . " <br>");*/ | |||
| //print "Subdomino: " . $this->subdomino . "</p>\n Dominio: " . $this->domino; | |||
| if($this->comprobarSubDominios($fields['domain'])){ | |||
| $this->crearSubDominio($remote, $fields['domain']); | |||
| @@ -1374,18 +1435,23 @@ print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n"; | |||
| } | |||
| } else { | |||
| $this->crearDnsSitioWeb($remote); | |||
| //$variablePHP = "<script> document.write(test) </script>"; | |||
| //Si todo va bien, el resultado de la web y dns | |||
| echo '<br><div class="alert alert-success"><br> | |||
| Altas Web y DNS del dominio <b>'.$fields['domain'].'</b>, ¡Creadas correctamente! | |||
| if(!$this->dominio_error){ | |||
| $this->crearDnsSitioWeb($remote); | |||
| //$variablePHP = "<script> document.write(test) </script>"; | |||
| //Si todo va bien, el resultado de la web y dns | |||
| echo '<br><div class="alert alert-success"><br> | |||
| Altas Web y DNS del dominio <b>'.$fields['domain'].'</b>, ¡Creadas correctamente! | |||
| <br><br></div></br>'; | |||
| //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; | |||
| } | |||
| } | |||
| } | |||
| } | |||